十進制轉換為二進制
十進制轉二進制分為:整數轉二進制、小數轉二進制
整數轉二進制
- 采用"除2取余,逆序排列"法:
1.首先用2整除一個十進制整數,得到一個商和余數
2.然后再用2去除得到的商,又會得到一個商和余數
3.重復操作,一直到商為小於1時為止
4.然后將得到的所有余數全部排列起來,再將它反過來(逆序排列),切記一定要反過來!
- 假設我們現在需要將42轉為二進制,那我們怎么做呢,如下圖所示:
小數轉二進制
- 采用"乘2取整,順序排列"法:
1.用2乘十進制小數,可以得到積,將積的整數部分取出
2.再用2乘余下的小數部分,又得到一個積,再將積的整數部分取出
3.重復操作,直到積中的小數部分為零,此時0或1為二進制的最后一位,或者達到所要求的精度為止
- 例如將0.125轉換為二進制:
0.125 * 2 = 0.25 ------0 0.25 * 2 = 0.5 ------0 0.5 * 2 = 1.0 ------1 當小數部分為0就可以停止乘2了,然后正序排序就構成了二進制的小數部分:0.001
- 如果小數的整數部分有大於0的整數時,將整數部分和小數部分先單獨轉為二進制,再合在一起就可以了,例如:
假設要將8.125 轉換為二進制
現將8轉為二進制:得到1000
再將0.125轉為二進制:得到0.001
合並后為1000.001
二進制轉換為十進制
二進制轉為十進制要從右到左用二進制的每個數去乘以2的相應次方,小數點后則是從左往右。
如果首位是0就表示正整數,如果首位是1則表示負整數,正整數可以直接換算,負整數則需要先取反再換算。
因為計算機內部表示數的字節單位是定長的。如8位、16位、32位。所以位數不夠時,高位補零。
- 如要想二進制00101010轉為十進制,因為以0開頭,所以這是正整數,計算如下所示:
(0 * 2 ^ 0) + (1 * 2 ^ 1) + (0 * 2 ^ 2) + (1 * 2 ^ 3) + (0 * 2 ^ 4) + (1* 2 ^ 5) + (0 * 2 ^ 6) + (0 * 2 ^ 7) = 0 + 2 + 0 + 8 + 0 + 32 + 0 + 0 = 42
- 如果11101011想轉為*負的十進制,因為最高位是1,所以先減一取反得到 00010101,然后計算出00010101對應的十進制為21,所以11101011最終對應的十進制為 -21。