權值為16的1次方,第2位的權值為16的2次方……
所以,在第N(N從0開始)位上,如果是數X(X大於等於0,並且X小於等於15,即:F)表示的大小為X*16的N次方。
假設有一個十六進數2AF5,那麼如何換算成10進製呢?
用豎式計算:2AF5換算成10進製
第0位:5*16^0=5
第1位:F*16^1=240
第2位:A*16^2=2560
第3位:2*16^3=2*4096=8192
直接計算
5*16^0+F*16^1+A*16^2+2*16^3=10997
(別忘了,在上麵的計算中,A表示10,而F表示15)
現在可以看出,所有進製換算成10進製,關鍵在於各自的權值不同。
假設有人問你,十進數1234為什麼是一千二百三十四?你儘可以給他這麼一個算式:
1234=1*10^3+2*10^2+3*10^1+4*10^0
6.2.6十六進製數的表達方法
如果不使用特殊的書寫形式,16進製數也會和10進製相混。隨便一個數:9876,就看不出它是16進製或10進製。
請到𝐨𝐨𝐩.𝐭𝐰查看完整章節
C,C++規定,16進製數必須以0x開頭。比如0x1表示一個16進製數。而1則表示一個十進製。另外如:0xff,0xFF,0X102A,等等。其中的x也不區分大小寫。(注意:0x中的0是數字0,而不是字母O)
以下是一些用法示例:
inta=0x100F;
intb=0x70+a;
至此,我們學完了所有進製:10進製,8進製,16進製數的表達方式。最後一點很重要,C\/C++中,10進製數有正負之分,比如12表示正12,而-12表示負12,;但8進製和16進製隻能表達無符號的正整數,如果你在代碼中寫:-078,或者寫:-0xF2,C,C++並不把它當成一個負數。
6.2.7十六進製數在轉義符中的使用
轉義符也可以接一個16進製數來表示一個字符。如在6.2.4小節中說的\\'?\\'字符,可以有以下表達方式:
\\'?\\'\/\/直接輸入字符
\\'\\77\\'\/\/用八進製,此時可以省略開頭的0
\\'\\0x3F\\'\/\/用十六進製
同樣,這一小節隻用於了解。除了空字符用八進製數\\'\\0\\'表示以外,我們很少用後兩種方法表示一個字符。
6.3十進製數轉換到二、八、十六進製數
6.3.110進製數轉換為2進製數
給你一個十進製,比如:6,如果將它轉換成二進製數呢?
10進製數轉換成二進製數,這是一個連續除2的過程:
把要轉換的數,除以2,得到商和餘數,
將商繼續除以2,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。
聽起來有些糊塗?我們結合例子來說明。比如要轉換6為二進製數。
“把要轉換的數,除以2,得到商和餘數”。
那麼:
要轉換的數是6,6÷2,得到商是3,餘數是0。(不要告訴我你不會計算6÷2!)
“將商繼續除以2,直到商為0……
現在商是3,還不是0,所以繼續除以2。
那就:3÷2,得到商是1,餘數是1。
“將商繼續除以2,直到商為0……”
現在商是1,還不是0,所以繼續除以2。
那就:1÷2,得到商是0,餘數是1(拿筆紙算一下,1÷2是不是商0餘1!)
“將商繼續除以2,直到商為0……最後將所有餘數倒序排列”
好極!現在商已經是0。
我們三次計算依次得到餘數分別是:0、1、1,將所有餘數倒序排列,那就是:110了!
6轉換成二進製,結果是110。
把上麵的一段改成用表格來表示,則為:
被除數計算過程商餘數
66\/230
33\/211
11\/201
(在計算機中,÷用\/來表示)
:除連的圖下用使是程過算換的見常更所,間時費點有是還表樣這畫要們我,時試考在是果如
)1:圖(
。數製進二為換轉6將何如遍一算計筆拿己自且並,明說字文及,表,圖照對家大請
。6是就否是製進01成換011下一算計就在現請以所,了數製進01成換轉數製進二將何如會學經已你?嗎6是011數製進二?嗎對果結換轉的們我,天半了說
數製進61、8為換轉數製進012.3.6
。8成變2由數除:化變一唯,似類法方的製進2為換轉和,法方的製進8成換轉數製進01,心開常非
。數製進八成換轉021數製進十將何如,子例個一看來
:示表格表用
數餘商程過算計數除被
0518/\021021
718/\5151
108/\11
。071:為果結,製進8為換轉021
。61成變2由數除:化變一唯,似類法方的製進2為換轉和,法方的製進61成換轉數製進01,心開常非常非
:為則製進61成換轉,021是樣同
數餘商程過算計數除被
8761/\021021
7061/\77
。87:為果結,製進61為換轉021
。程過的表個兩麵上算演,式形的)1:圖(用采,紙筆拿請
換轉相互數製進六十、二4.6
。然亦之反,數製進六十為換轉能就接直,數製進二見看到做能都員序程++C,C個每,算計用不卻換轉的者二這過不。要重較比換轉相互的製進六十和製進二
。到做能就,節小一這完學要隻,樣一也們我
?呢少多是它,1111:數製進二個一看來們我先首
。51=8*1+4*1+2*1+1*1=3^2*1+2^2*1+1^2*1+0^2*1:算計樣這要還能可你
。1=0^2,2=1^2,4=2^2是次依後然,8=3^2為值權的位高最,即。1、2、4、8:,記位低往位高從是且並,值權的位一每它住記接直須必們我以所,位4才1111於由,而然
48住記