提示
二進制0,1
八進制0,1,2,3,4,5,6,7
十進制0,1,2,3,4,5,6,7,8,9
十六進制0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)
注意
十六進制中10~15是用字母來表示的,且字母可為大小寫,還可以混用。例如十六進制中的10,可以用A或a來表示;1011可以用AB或Ab來表示。
現在正式的話題來了,看下面
一、十進制與二、八、十六進制的互換
1、十進制->八進制
用8連續除十進制數整數部分,直到商為0,逆序排列余數即可得到
用8連續乘十進制數小數部分,直到的小數為0或達到所要求的精度為止,正序排列積的整數部分即可得
舉例
假設十進制的一個數為83.12
83÷8=10余數為3
10÷8=1余數為2
1÷8=0余數為1
0.12*8=0.96整數部分為0小數部分為0.96
0.96*8=7.68整數部分為7小數部分為0.68
0.68*8=5.44整數部分為5小數部分為0.44
0.44*8=3.52整數部分為3小數部分為0.52
.
.
.
此處省略,大家可以自己進行接下來的運算,因為舉例,精度就短些。
(十)83.12=(八)123.0753
2、十進制->十六進制
用16連續除十進制數整數部分,直到商為0,逆序排列余數即可得到
用16連續乘十進制數小數部分,直到的小數為0或達到所要求的精度為止,正序排列積的整數部分即可得
舉例
假設十進制的一個數為299.12
299÷16=18余數為B(11)
18÷16=1余數為2
1÷16=0余數為1
0.12*16=1.92整數部分為1小數部分為0.92
0.92*16=7.68整數部分為E(14)小數部分為0.72
0.72*16=5.44整數部分為B(11)小數部分為0.52
.
.
.
(十)299.12=(十六)12b.1eb
3、十進制->二進制
用2連續除十進制數整數部分,直到商為0,逆序排列余數即可得到
用2連續乘十進制數小數部分,直到的小數為0或達到所要求的精度為止,正序排列積的整數部分即可得
舉例
假設十進制的一個數為3.25
3÷2=1余數為1
1÷2=0余數為1
0.25*2=0.5整數部分為0小數部分為0.5
0.5*2=1整數部分為1小數部分為0
(十)299.12=(二)11.01
總結
其實十進制轉二、八、十六進制,大致是一樣的,同樣的二、八、十六進制轉十進制也是這樣的
4、二、八、十六進制->十進制
把二進制數(或八進制或十六進制數)按位權形式展開多項式和的形式,求其最后的和
舉例
假設二進制數為1111
1*2的三次方等于8
1*2的二次方等于4
1*2的一次方等于2
1*2的零次方等于1
8+4+2+1=15
即(二)1111=(十)15
注意最大N此方為總的位數-1,此后次方依次遞減,直到為0次方。如二進制1111,最大N次方為4-1=3,此后依次遞減,最后為0次方。八進制、十六進制也是如此
假設八進制數為123
1*8的二次方等于64
2*8的一次方等于16
3*8的零次方等于3
64+16+3=83
即(八)123=(十)83
假設十六進制數為12B
1*16的二次方等于256
2*16的一次方等于32
11*16的零次方等于11
256+32+11=299
即(十六)12B=(十)299
二、八、十六進制與二進制的互換
1、間接法
把二進制轉為十進制再到八進制或十六進制,大家可以看我上面的進制的轉換,自己試試。
2、直接法
定理1:將三位的二進制轉換成一位八進制,相反的,將一位八進制轉三位的二進制;
定理2:將四位的二進制轉換成一位十六進制,相反的,將一位十六進制轉四位二進制
定理3:分位時如位數不夠,整數部分在最左邊補0,小數部分在最右邊補0;
舉例:
二進制轉八進制、十六進制
假設二進制數為1011001.1101011
進行分位010|101.101|010|為分隔符
剩下的就跟二進制轉十進制一樣
把每三位看為整體,計算出值,最后連接就行
如010
0*2的二次方等于0
1*2的一次方等于2
0*2的零次方等于0
因此010=2
同樣計算出101(值為5),最后進行連接
(二)10101.10101=010|101.101|010=(八)25.52
同樣,只是把每四位看為整體,計算出值,最后連接就行
(二)11011011.11011111=1101|1011.1101|1111=(十六)DB.DF
而八進制、十六進制轉二進制,反過來就行
(十六)D|B.D|F=1101|1011.1101|1111=(二)11011011.11011111
總結
八為2的三次方,因此需二進制為3位;十六為2的四次方,因此需二進制為4位,所以32進制就應該需二進制為5位,即N進制中,N為2的x次方,該進制就需要二進制x位
如有錯誤,請指出
如有侵權,請聯系刪除
寫在最后今天就到這里了哈~
后續我還會發布更多的項目源或者學習資料,希望大家可以持續關注,有什么問題可以給我留言。
不管你是轉行也好,初學也罷,進階也可,如果你想學編程~
【值得關注】我的【C/C++源碼資料學習群】點擊進入