十六進制點計架???!

2007-07-12 3:06 am
十六進制點計架???!

回答 (2)

2007-07-12 3:09 am
✔ 最佳答案
1.) 將3424818十進制數轉為十六進制

轉換十進制數成十六進制數:用短除法,不斷除16並寫出餘數;
將商和餘數從下到上寫出。例如,十進制數3424818轉換成十六進制的做法如下:
16)_3424818_   餘數
16)_214051_…………2
16)_13378__…………3
16)___836___ ………2
16)___52____ ………4
   3    ………4


= 344232 (16)



2.) 將4919十進制數轉為十六進制

轉換十進制數成十六進制數:用短除法,不斷除16並寫出餘數;
將商和餘數從下到上寫出。例如,十進制數4919轉換成十六進制的做法如下:
16)_4919_   餘數
16)_307_…………7
16)__19__…………3
   1   ………3

= 1337(16)
--------------------------------------------------------------------------------------------------
在十六進制當中:
 0+16=10, 16*2=20, 16*3=30, 16*4=40, 16*5=50,
 16*6=60, 16*7=70, 16*8=80, 16*9=90, 16*10=100
全部是錯的(第一部分會說明),而應該是:
 0+16=16, 16*2=2C, 16*3=42, 16*4=58, 16*5=6E,
 16*6=84, 16*7=9A, 16*8=B0, 16*9=C6, 16*10=160

問題在於不同進制當中的表達方式……
(進制數目稱為基數/radix/base)
就算你自己或其他人都看得明,想得通,表達都應該統一和清晰。

在十六進制中,16就是16,不過代表十進制中的22;
在十進制中,16就是16,不過代表十六進制中的10;
基數為十六的16(即十六進制中的16),與基數為十的16不同,;

我們不可胡亂混合各種進制而沒有標明,
如「16+16=26=38=53」,
原來第一個16是十六進制、第二個16是十進制、26是十六進制、38是十進制、53是七進制……
這樣混亂得很,我們會看不明白……

所以我們要清楚進制的表達方式。

----------------------------------------第一部分----------------------------------------

當開首已經標明採用的進制,則代表之後的 所有計算 均預設為該進制,
所有數字應統一採用該進制,除非數字再有特別標明(第二部分會說明)。

  例如「在十六進制中,16*2=2C」:計算中的預設進制為十六進制
    「16」是十六進制的「16」,代表十進制中的「22」;
    「2」是十六進制的「2」,代表十進制中的「2」;
    「2C」是十六進制的「2C」,代表十進制中的「44」;
  所以「在十六進制中,16*2=2C」等同於「在十進制中,22*2=44」。

  當然,現在人類的預設進制為十進制,平時計算不需寫「在十進制中」。

「在十六進制當中,0+16=10」這表達是錯的,因為當中的「16」是十進制而不是十六進制。

----------------------------------------第二部分----------------------------------------

當計算中需要混合不同的進制,數字要標明進制(為了容易理解,預設進制也應標明):

 (a)在數字後下標基數,即在數字右下細寫基數,
  其中進制數目應以預設進制表示
  (這方法比較常用,但在這裡我做不到,所以可用另一種方法)

 (b)在數字後括著進制的英文縮寫
  十六進制=hex、十進制=dec、八進制=oct、二進制=bin
  (這方法的壞處是會忘了其他進制的英文縮寫……我真的不記得)

例如:0+16=16=10(hex)   (預設進制沒有標明因為混淆很低)
   1(hex)+16(dec)=11(hex)=17(dec)
   在十六進制中,1+16=17=23(dec)
   16(dec)*10(hex)=100(hex)
   16(dec)*10(dec)=A0(hex)

--------------------------------------------------------------------------------------------------

最後,你要記得,當各數字採用不同的進制,各數字的基數應該標明。
或者可以想清楚會否引起分歧(whether it is ambiguous)及錯誤,
就算你自己甚至其他人都看得明,若會,則標明吧,
簡單如「在十六進制中,10=A」或「在十六進制中,A=10」,都應盡早改了。
2007-07-12 3:11 am
十六進位(簡寫為hex或下標16)在數學中是一種逢16進1的進位制,一般用數字0到9和字母A到F表示。
例如十進位數79,在二進位寫作01001111,在16進位寫作4F(4 = 0100, F = 1111)。
在歷史上,中國曾經在重量單位上使用過16進位,比如,規定16兩為一斤。
現在的16進位則普遍應用在電腦領域,這是因為將4個比特化成單獨的16進位數字不太困難。1位元組可以表示成2個連續的16進位數字。可是,這種混合表示法容易令人混淆,因此需要一些字首、字尾或下標來顯示。
目錄 [隐藏] 1 表示方式2 十六進制的分數3 十六進位的轉換 3.1 數學的計算方法 3.1.1 十進制轉十六進制3.1.2 十六進制轉十進制 3.2 編程中的函式 3.2.1 Visual Basic3.2.2 Python3.2.3 Perl
[編輯] 表示方式 hex bin oct dec 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 A 1010 12 10 B 1011 13 11 C 1100 14 12 D 1101 15 13 E 1110 16 14 F 1111 17 15 不同電腦系統、編程語言對於16進制數值有不同的表示方式:
Ada用所基於的「數字引證」把16進位數包起來,例如「16#5A3#」。(注:Ada對整數和實數都可以使用從1到16中任何一個做為其基數。)VHDL中使用字首 X,例如,X"10",對應的二進位碼為: "00010000".C語言、Python語言及其他相近的語言使用字首「0x」,例如「0x5A3」。開頭的「0」令解析器更易辨認數,而「x」則代表十六進位(就如「O」代表八進位)。在「0x」中的「x」可以大寫或小寫在VB中,使用字首「&H」來表示在HTML,十六進位字元可以用「x」,例如&#x5a3和֣效果應該無異某些版本的BASIC語言會採用「&H」詞頭,例如:「&H5A3」。Pascal和某些匯編器用字尾「h」來辨別16進位的數(若該數以字母起首,在前面會增加一個「0」)例如「0A3Ch」、「5A3h」其他匯編器(AT&T, Motorola)和某些BASIC的版本使用字首「$」,例如「$5A3」亦有用X'5A3'這類表示方式的,如PL/I 由於表示方式沒有單一、已協定的標準,所以以上的表示方式都有被使用,有時甚至在同一份論文上會出現幾個不同的表示方式。但因為各方式之間沒有太大的分歧,所以即使混合使用也沒有構成問題。
其中最常用(或常見)表示十六進位數值的方式是將 '0x' 加在數字前,或在數字後加上小字 16。例如 0x2BAD 和 2BAD16 都是表示十進位的11181(或1118110)。
在網頁設計上十六進制是很常用的。HTML和CSS使 用十六進制的表示法來表示網頁上的特定顏色。使用 # 的符號來表示而非用個別的符號表示十六進制。24-bit 顏色可以用 #RRGGBB 的格式來表示,RR 是顏色中紅色成分的數值,GG 是顏色中綠色成分的數值,BB 顏色中藍色成分的數值。舉個例子, 紅色的陰影是十進制 238,9,63 可以編成 #EE093F。參見 Web colors.
在URL的特殊字元亦是用ASCII中的十六進位,每位元組都有百份比符號(%)在前,例如: 空格就表示為%20,而中文維基百科的首頁地址就是 http://zh.wikipedia.org/wiki/%E9%A6%96%E9%A1%B5

[編輯] 十六進制的分數 與其他進位系統一樣,十六進制的系統可以用來表達分數,而循環小數也是很常見的:












1/ 0x 1 = 0x 1 1/ 0x 5 = 0x 0.3 1/ 0x 9 = 0x 0.1C7 1/ 0x D = 0x 0.13B 1/ 0x 2 = 0x 0.8 1/ 0x 6 = 0x 0.2A 1/ 0x A = 0x 0.19 1/ 0x E = 0x 0.1249 1/ 0x 3 = 0x 0.5 1/ 0x 7 = 0x 0.249 1/ 0x B = 0x 0.1745D 1/ 0x F = 0x 0.1 1/ 0x 4 = 0x 0.4 1/ 0x 8 = 0x 0.2 1/ 0x C = 0x 0.15 1/ 0x10 = 0x 0.1 由於基數16是平方(42),所以與10進位相比16進位小數的余數循環周期更加常見。十進位時當最簡分母包含不存在於基數的素因數時就會出現循環小數。 而16進位時所有分母不是2的冪情況下都會表現為循環小數。
然而由於貯存上的方便,浮點小數在電腦上一般都會採用二進制。000

[編輯] 十六進位的轉換
[編輯] 數學的計算方法 主條目:進制轉換
圖片參考:http://zh.wikipedia.org/skins-1.5/common/images/magnify-clip.png
十六進位的乘法表
[編輯] 十進制轉十六進制 採餘數定理分解,例如將487710轉成十六進制︰
4877 ÷ 16 = 304 ... 13(D)
304 ÷ 16 = 19 ... 0
19 ÷ 16 = 1 ... 3
1 ÷ 16 = 0 ... 1
分解到 0 為止,結果即為 130D16。

[編輯] 十六進制轉十進制 如上例,將 130D16 反算回十進制如下,其中英文字母要當作一整組數字來處理,如 D 要當作 13 處理,且不可和其它位數的數字混淆。

圖片參考:http://upload.wikimedia.org/math/0/a/4/0a49944847e25baa665dfd40c9176db9.png
結果即為 487710。

[編輯] 編程中的函式
[編輯] Visual Basic 十六進位轉換為十進位:十進位(Long型)=CLng("&H" & 十六進位數(String型))十進位轉換為十六進位:十六進位數(String型)=Hex$(十進位)
[編輯] Python 調用Python內置int()函數把該字串轉為數字。以下為在Python解釋器編程環境下的操作示範:
把十六進位的字串轉為十進位數字: print int('ff', 16)
255 把十進位數字轉換為以十六進位表示之字串,可調用內置的hex()函數: print hex(255)
0xff 調用BinAscii模塊其中的b2a_hex()函數,可把以ASCII編碼的文字以十六進位表示: print binascii.b2a_hex('A')
41反之也可把以十六進位表示的文字,換成以ASCII編碼的文字: print binascii.a2b_hex('41')
A
[編輯] Perl 十進制轉十六進制︰
#!/usr/local/bin/perl
for ($i = 0; $i < @ARGV; $i++)
{
printf("%d\t= 0x%x\n", $ARGV[$i], $ARGV[$i]);
}
十六進制轉十進制︰
#!/usr/local/bin/perl
for ($i = 0; $i < @ARGV; $i++)
{
$val = hex($ARGV[$i]);
printf("0x%x\t= %d\n", $val, $val);
}
用例︰
> ./10to16 100 512 789
100 = 0x64
512 = 0x200
789 = 0x315
> ./16to10 AB 5D9
0xAB = 171
0x5D9 = 1497


收錄日期: 2021-04-19 00:54:06
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070711000051KK03825

檢視 Wayback Machine 備份