二進(jìn)制和十六進(jìn)制對(duì)于程序員來說應(yīng)該是很熟悉的東西了,我也不知道為什么我現(xiàn)在還在看這個(gè)呢?^_^
什么是二進(jìn)制?什么是十六進(jìn)制?
說到進(jìn)制我們最熟悉的莫過于十進(jìn)制了,我們從小學(xué)的數(shù)學(xué)都是用的十進(jìn)制。所謂十進(jìn)制就是逢十進(jìn)一,從0開始數(shù) 0、1、2、3、.....7、8、9,十個(gè)數(shù)了再下一個(gè)數(shù)就要進(jìn)一位變成10(變成了兩位數(shù))。二進(jìn)制就是逢二進(jìn)一,0、1再下一個(gè)數(shù)就要進(jìn)一位了變成10(變成兩位數(shù)),十六進(jìn)制數(shù)的道理也是一樣的,從0開始數(shù),0、1、2、.....7、8、9發(fā)現(xiàn)還沒到十六個(gè)數(shù)還不能進(jìn)一位,所以不能變成10,那怎么辦?數(shù)字不夠用那就用字母來湊,9后面接著數(shù)A、B、C、D、E、F,然后才進(jìn)一位變成10。
進(jìn)制間的轉(zhuǎn)換
人類習(xí)慣看十進(jìn)制的數(shù),看到一長(zhǎng)串的二進(jìn)制數(shù)就一臉懵逼。計(jì)算機(jī)就只認(rèn)二進(jìn)制的數(shù),看到十進(jìn)制也是一臉懵逼。至于十六進(jìn)制我想就是為了取個(gè)平衡吧(十六進(jìn)制和二進(jìn)制的轉(zhuǎn)換會(huì)容易些)。
什么叫進(jìn)制的轉(zhuǎn)換呢?比如說二進(jìn)制中0、1后面的數(shù)是10(不讀作“十”),我們知道在十進(jìn)制中1后面是2,所以二進(jìn)制中的10轉(zhuǎn)換為十進(jìn)制就是2,反過來十進(jìn)制中的2轉(zhuǎn)換為二進(jìn)制就是10。當(dāng)然進(jìn)制間轉(zhuǎn)換不能靠數(shù)。
先從簡(jiǎn)單的二進(jìn)制轉(zhuǎn)十六進(jìn)制說起:比如二進(jìn)制101010110
如圖所示:將二進(jìn)制每四位分為一組,不夠四位的前面補(bǔ)0(例子中沒補(bǔ))。每一組都可以轉(zhuǎn)換為一個(gè)十六進(jìn)制的數(shù),將這些數(shù)連在一起就是結(jié)果,也就是說上面的二進(jìn)制轉(zhuǎn)換位十六進(jìn)制為156。那么每一個(gè)組里的二進(jìn)制要怎么轉(zhuǎn)為十六進(jìn)制呢?
從上圖可知0110的值計(jì)算為0*8 + 1*4 + 1*2 + 0*1 = 6。如果4位全為1剛好是十六進(jìn)制的F,這可以解釋為什么是4位劃分為一組了。
十六進(jìn)制轉(zhuǎn)二進(jìn)制剛好是一個(gè)相反的過程。將十六進(jìn)制數(shù)的每一位轉(zhuǎn)化為一個(gè)4位的二進(jìn)制,然后連起來。
二進(jìn)制轉(zhuǎn)十進(jìn)制的思路第二幅圖的思路是一樣的,只不過不分組就是了。例:
十進(jìn)制轉(zhuǎn)二進(jìn)制就比較麻煩了,要將十進(jìn)制的數(shù)不斷除2取余數(shù),懶得寫了丟個(gè)網(wǎng)上的圖片:
下面是其他網(wǎng)友的補(bǔ)充
1.十進(jìn)制轉(zhuǎn)R進(jìn)制1.1 十進(jìn)制轉(zhuǎn)二進(jìn)制
十進(jìn)制整數(shù)轉(zhuǎn)二進(jìn)制
十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制采用“除2倒取余”,十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)采用“乘2取整”。
例題: 135D = ______ B
**解析:**如下圖所示,將135除以2,得余數(shù),直到不能整除,然后再將余數(shù)從下至上倒取。得到結(jié)果:1000 0111B.
十進(jìn)制小數(shù)轉(zhuǎn)二進(jìn)制
十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)采用 “乘2取整,順序排列” 法。
具體做法是:
用2乘十進(jìn)制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù) 部分,又得到一個(gè)積,再將積的整數(shù)部分取出,如此進(jìn)行,直到積中的小數(shù)部分為零,或者達(dá)到所要求的精度為止。
然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進(jìn)制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。
例題: 0.68D = ______ B(精確到小數(shù)點(diǎn)后5位)
**解析:**如下圖所示,0.68乘以2,取整,然后再將小數(shù)乘以2,取整,直到達(dá)到題目要求精度。得到結(jié)果:0.10101B.
1.2 十進(jìn)制轉(zhuǎn)八進(jìn)制
思路和十進(jìn)制轉(zhuǎn)二進(jìn)制一樣,參考如下例題:
例題: 10.68D = ______ Q(精確到小數(shù)點(diǎn)后3位)
**解析:**如下圖所示,整數(shù)部分除以8取余數(shù),直到無法整除。小數(shù)部分0.68乘以8,取整,然后再將小數(shù)乘以8,取整,直到達(dá)到題目要求精度。得到結(jié)果:12.534Q.
1.3 十進(jìn)制轉(zhuǎn)十六進(jìn)制
思路和十進(jìn)制轉(zhuǎn)二進(jìn)制一樣,參考如下例題:
例題: 25.68D = ______ H(精確到小數(shù)點(diǎn)后3位)
**解析:**如下圖所示,整數(shù)部分除以16取余數(shù),直到無法整除。小數(shù)部分0.68乘以16,取整,然后再將小數(shù)乘以16,取整,直到達(dá)到題目要求精度。得到結(jié)果:19.ae1H.
# 2.R進(jìn)制轉(zhuǎn)十進(jìn)制## 2.1 二進(jìn)制轉(zhuǎn)十進(jìn)制**方法為:**把二進(jìn)制數(shù)按權(quán)展開、相加即得十進(jìn)制數(shù)。(具體用法如下圖)
例題: 1001 0110B = ______ D
**解析:**如下圖所示。得到結(jié)果:150D.
2.2 八進(jìn)制轉(zhuǎn)十進(jìn)制
八進(jìn)制轉(zhuǎn)十進(jìn)制的方法和二進(jìn)制轉(zhuǎn)十進(jìn)制一樣。
例題: 26Q = ______ D
**解析:**如下圖所示。得到結(jié)果:22D.
2.3 十六進(jìn)制轉(zhuǎn)十進(jìn)制
例題: 23daH = ______ D
**解析:**如下圖所示。得到結(jié)果:9178D.
3.二進(jìn)制轉(zhuǎn)八進(jìn)制
二進(jìn)制轉(zhuǎn)換成八進(jìn)制的方法是,取三合一法,即從二進(jìn)制的小數(shù)點(diǎn)為分界點(diǎn),向左(或向右)每三位取成一位。
例題: 1010 0100B = ____Q
**解析:**計(jì)算過程如下圖所示。得到結(jié)果:244Q.
4.二進(jìn)制轉(zhuǎn)十六進(jìn)制
二進(jìn)制轉(zhuǎn)換成八進(jìn)制的方法是,取四合一法,即從二進(jìn)制的小數(shù)點(diǎn)為分界點(diǎn),向左(或向右)每四位取成一位。
例題: 1010 0100B = ____H
**解析:**計(jì)算過程如下圖所示。得到結(jié)果:a4H.
5.工欲善其事,必先利其器
下面的表格是8位二進(jìn)制所對(duì)應(yīng)的十進(jìn)制數(shù)值,對(duì)進(jìn)制轉(zhuǎn)換以及類似題目的理解非常有用:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | B |
---|---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | D |
注:B:二進(jìn)制
D:十進(jìn)制
例題: 135D = ______ B
**解析:**有了上面二進(jìn)制對(duì)應(yīng)十進(jìn)制數(shù)值的表格,我們就可以將題目給的十進(jìn)制135拆分為:128+7,再?gòu)谋砀裰姓业綄?duì)應(yīng)的數(shù)值,拼湊即可得到答案。
135D = 128D + 7D = 1000 0111B
作者:戴翔
電子郵箱:[email protected]
簡(jiǎn)介:中華人民共和國(guó)公民,中國(guó)共青團(tuán)員,CSDN博客專家,秦淮區(qū)疾控中心托管社會(huì)公益組織指南針工作室志愿者,創(chuàng)業(yè)公司研發(fā)中心負(fù)責(zé)人,在校大學(xué)生。
新聞熱點(diǎn)
疑難解答
圖片精選