一、 二進制與十進制之間的轉換
a.二進制轉十進制(不分整數和小數從最后一位算起,每一位上的數乘以2的幾次方,這個次數由這個數字所在的位置決定,從零位開始,然后相加)
01101011.001 轉十進制:
第-3 1乘2的-3次方=0.125
第-2 0乘2的-2次方=0
第-1 0乘2的-1次方=0
第0位 1乘2的0次方=1
1 1乘2的1次方=2
2 0乘2的2次方=0
3 1乘2的3次方=8
4 0乘2的4次方=0
5 1乘2的5次方=32
6 1乘2的6次方=64
7 0乘2的7次方=0
然后:1+2+0+8+0+32+64+0=107.125
01101011=107
b.十進制轉二進制
(整數:除2取余法是一個連續除2的過程,直到商出現0時位置,余數反向排列;)
整數23 轉二級制:
23除2商11余1
11除2商5余1
5除2商2余1
2除2商1余0
1除2商0余1
然后把余數反向排列 :23=10111
(小數:乘2取整法,即將小數部分乘以2,然后取整數部分,剩下的小數部分繼續乘以2,然后取整數部分,剩下的小數部分又乘以2,一直取到小數部分
為零為止。如果永遠不能為零,就同十進制數的四舍五入一樣,按照要求保留多少位小數時,就根據后面一位是0還是1,取舍,如果是零,舍掉,如果是1,向入一位。換句話說就是0舍1入。讀數要從前面的整數讀到后面的整數)
0.125 轉二進制
第一步,將0.125乘以2,得0.25,則整數部分為0,小數部分為0.25;
第二步, 將小數部分0.25乘以2,得0.5,則整數部分為0,小數部分為0.5;
第三步, 將小數部分0.5乘以2,得1.0,則整數部分為1,小數部分為0.0;
第四步,讀數,從第一位讀起,讀到最后一位,即為0.001。
23.125 轉二進制10111.001
0.45 轉二進制(保留到小數點第四位)
第一步,將0.45乘以2,得0.9,則整數部分為0,小數部分為0.9;
第二步, 將小數部分0.9乘以2,得1.8,則整數部分為1,小數部分為0.8;
第三步, 將小數部分0.8乘以2,得1.6,則整數部分為1,小數部分為0.6;
第四步, 將小數部分0.6乘以2,得1.2,則整數部分為1,小數部分為0.2; 算到這一步就可以了,因為只需要保留四位小數
第五步, 將小數部分0.2乘以2,得0.4,則整數部分為0,小數部分為0.4;
第六步, 將小數部分0.4乘以2,得0.8,則整數部分為0,小數部分為0.8;后面會一直循環重復
第七步, 將小數部分0.8乘以2,得1.6,則整數部分為1,小數部分為0.6;
。。。。。。
讀整數不分,從第一位讀起,讀到最后一位,即為0.0111。
23.45(保留到小數點第四位)10111.0111
二、 二進制與八進制之間的轉換(基礎還是二進制和十進制之間的轉換)
(取三合一法,即從二進制的小數點為分界點,向左(向右)每三位取成一位,接着將這三位二進制按權相加,得到 的數就是一位八位二進制數,然后,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的八進制數。如果向左(向右)取三位后,取到最高(最低)位 時候,如果無法湊足三位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足三位)這里的最高位,最低位和十進制的一樣,前面的是最高位,后面的是最低位
三位二進制表示一位八進制, 因為三位二進制數最大(111)的十進制數也就是7,所以就保證每位數都是0-7之間的數
a.二進制轉八進制
1100100 拆分成 : 001 100 100
001 1 這是由二級制轉換成十進制得來的 0*2^2 + 0*2^1 + 1*2^0 = 1
100 4 1*2^2 + 0*2^1 + 0*2^0 = 4
100 4 1*2^2 + 0*2^1 + 0*2^0 = 4
依次讀下來就是 144
1100100 =144
b.八進制轉二級制(腦海中有個概念,那就是你要用十進制轉二進制先算出0-7每個數的二級制數表達方式,還是一樣不夠三位補零)
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
有了上面這個表,隨便報一個數653524,你要明白八進制上的一位就對應三位二進制,653524有6位,所以二進制數就有3*6=18位,6用110代替,5用101代替,依次下來就是
110 101 011 101 010 100
三、 二進制與十六進制之間的轉換(基礎還是二進制和十進制之間的轉換)
四位二進制表示一位十六進制, 因為四位二進制數最大(1111)也就是十進制的表示法15即十六進制的表示法F,所以就保證每位數都是0-F之間的數
a.二進制轉十六進制
同樣還是上面這個數:1100100 拆分 0110 0100
0110 6
0100 4
1100100 = 64
b.十六進制轉二進制(腦海中有個概念,那就是你要先算出0-F每個數的二級制數表達方式,還是一樣不夠四位補零)
1-0001
2-0010
3-0011
4-0100
5-0101
6-0110
7-0111
8-1000
9-1001
A-1010
B-1011
C-1100
D-1101
E-1110
F-1111
四、 十進制與十六進制之間的轉換(其算法和二進制和十進制之間的算法一樣只是,由2變成了16) 十進制與八進制之間的轉換(其算法和二進制和十進制之間的算法一樣只是,由2變成了8)
a.十進制轉十六進制
123 轉成十六進制
123除16商7余B
7除16商0余7
結果就是7B
b.十六進制轉二進制
十六進數 2AF5
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2 = 2560
第3位: 2 * 16^3 = 8192
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
2AF5 = 10997
五、其他:八進制與十六進制、八進制與十進制之間的轉換利用上面的關系就很簡單了,比如八進制先換成二進制,再由二進制轉換成十六進制
各進制與十進制之間的轉換
有一個公式:二進制數、八進制數、十六進制數的各位數字分別乖以各自的基數的(N-1)次方,其和相加之和便是相應的十進制數
比如八進制數: 34 = 3*8^1 + 4*8^0 = 28
六、不常用進制(所謂幾進制就是逢幾進1,退1還幾)
三進制、四進制、五進制、。。。、n進制
三進制:
0 0
1 1
2 10
四進制:
0 0
1 1
2 10
3 11
五進制:
0 0
1 1
2 10
3 11
4 100
六進制:
0 0
1 1
2 10
3 11
4 100
5 101
七進制:
0 0
1 1
2 10
3 11
4 100
5 101
6 110
。。。
n進制:腦海中有個概念,那就是你要用十進制轉二進制先算出0-(n-1)每個數的二級制數表達方式,還是一樣如果不夠(log以2為底n的對數,不足1,結果則為1;大於1並且有小數,加1,取整數)位數,,左邊補上(前面的結果-1)個零
比如四進制就是,那就是你要用十進制轉二進制先算出0-3每個數的二級制數表達方式,還是一樣不夠補(log以2為底4的對數)位數,左邊補上(2-1)個零
比如五進制就是,那就是你要用十進制轉二進制先算出0-4每個數的二級制數表達方式,還是一樣不夠補(log以2為底5的對數+1)位數,左邊補上(3-1)個零
比如八進制就是,那就是你要用十進制轉二進制先算出0-7每個數的二級制數表達方式,還是一樣不夠補(log以2為底8的對數)位數,左邊補上(3-1)個零