最近在看計(jì)算機(jī)基礎(chǔ)課程,其中有涉及到二進(jìn)制和十進(jìn)制的轉(zhuǎn)換,由于是視頻課程,對(duì)其中的轉(zhuǎn)換部分不甚熟悉,所以補(bǔ)充學(xué)習(xí)了一些知識(shí)。

一. 十進(jìn)制轉(zhuǎn)換為二進(jìn)制
1.1 十進(jìn)制整數(shù)轉(zhuǎn)化為二進(jìn)制
- 采用"除2取余,逆序排列"法:
這部分較為容易理解,引用如下:
1.首先用2整除一個(gè)十進(jìn)制整數(shù),得到一個(gè)商和余數(shù)
2.然后再用2去除得到的商,又會(huì)得到一個(gè)商和余數(shù)
3.重復(fù)操作,一直到商為小于1時(shí)為止
4.然后將得到的所有余數(shù)全部排列起來,再將它反過來(逆序排列),切記一定要反過來!
- 假設(shè)我們現(xiàn)在需要將42轉(zhuǎn)為二進(jìn)制,那我們?cè)趺醋瞿兀缦聢D所示:

1.2 小數(shù)轉(zhuǎn)二進(jìn)制
- 采用"乘2取整,順序排列"法:
1.用2乘十進(jìn)制小數(shù),可以得到積,將積的整數(shù)部分取出
2.再用2乘余下的小數(shù)部分,又得到一個(gè)積,再將積的整數(shù)部分取出
3.重復(fù)操作,直到積中的小數(shù)部分為零,此時(shí)0或1為二進(jìn)制的最后一位,或者達(dá)到所要求的精度為止
- 例如將0.125轉(zhuǎn)換為二進(jìn)制(當(dāng)小數(shù)部分為0就可以停止乘2了,然后正序排序就構(gòu)成了二進(jìn)制的小數(shù)部分:0.001) :
0.125 * 2 = 0.25 ------0
0.25 * 2 = 0.5 ------0
0.5 * 2 = 1.0 ------1
- 如果小數(shù)的整數(shù)部分有大于0的整數(shù)時(shí),將整數(shù)部分和小數(shù)部分先單獨(dú)轉(zhuǎn)為二進(jìn)制,再合在一起就可以了,例如:
假設(shè)要將8.125 轉(zhuǎn)換為二進(jìn)制
現(xiàn)將8轉(zhuǎn)為二進(jìn)制:得到1000
再將0.125轉(zhuǎn)為二進(jìn)制:得到0.001
合并后為1000.001

二. 二進(jìn)制轉(zhuǎn)換為十進(jìn)制
二進(jìn)制轉(zhuǎn)為十進(jìn)制要從右到左用二進(jìn)制的每個(gè)數(shù)去乘以2的相應(yīng)次方,小數(shù)點(diǎn)后則是從左往右。
如果首位是0就表示正整數(shù),如果首位是1則表示負(fù)整數(shù),正整數(shù)可以直接換算,負(fù)整數(shù)則需要先取反再換算。
因?yàn)橛?jì)算機(jī)內(nèi)部表示數(shù)的字節(jié)單位是定長的。如8位、16位、32位。所以位數(shù)不夠時(shí),高位補(bǔ)零。
- 如要想二進(jìn)制00101010轉(zhuǎn)為十進(jìn)制,因?yàn)橐?開頭,所以這是正整數(shù),計(jì)算如下所示:
(0 * 2的零次方) + (1* 2的一次方)+ (0 * 2 的二次方)+(1 * 2的三次方) +(0 * 2的四次方) +(1* 2的五次方) + (0 * 2的六次方) + (0 * 2的7次方) = 0 + 2 + 0 + 8 + 0 + 32 + 0 + 0 = 42

- 如果11101011想轉(zhuǎn)為*負(fù)的十進(jìn)制,因?yàn)樽罡呶皇?,所以先減一取反 00010101,然后計(jì)算出00010101對(duì)應(yīng)的十進(jìn)制為21,所以11101011最終對(duì)應(yīng)的十進(jìn)制為 -21。
