乘基取整法是什么_深入理解计算机系统(六):进制间的转换原理
目錄
1、進(jìn)制的介紹
2、二進(jìn)制轉(zhuǎn)換成其他進(jìn)制
3、十進(jìn)制轉(zhuǎn)換成其他進(jìn)制
4、十六進(jìn)制轉(zhuǎn)換成其他進(jìn)制
5、總結(jié)
上一篇博客我們講解了信息的在計(jì)算機(jī)中是如何存儲(chǔ)以及如何表示的。但是對(duì)于各個(gè)進(jìn)制的轉(zhuǎn)換只是一筆帶過(guò)了,后來(lái)作者仔細(xì)研究了進(jìn)制轉(zhuǎn)換的原理,發(fā)現(xiàn)還是挺有感悟的。那么這篇博客就講講進(jìn)制轉(zhuǎn)換。
正文:
1、進(jìn)制的介紹
在講進(jìn)制之前,我們先看一下數(shù)制的定義:用一組固定的數(shù)字和一套統(tǒng)一的規(guī)則來(lái)表示數(shù)目的方法稱為數(shù)制。
而數(shù)制有進(jìn)位計(jì)數(shù)制與非進(jìn)位計(jì)數(shù)制之分。非進(jìn)位計(jì)數(shù)制的數(shù)碼表示的數(shù)值大小與它在數(shù)中的位置無(wú)關(guān),這里我們不作過(guò)多的介紹。
進(jìn)位計(jì)數(shù)制的數(shù)碼所表示的數(shù)值大小則與它在數(shù)中所處的位置有關(guān),常見的有二進(jìn)制、十進(jìn)制、十六進(jìn)制,我們這里也只介紹這三種進(jìn)制的轉(zhuǎn)換。
進(jìn)位計(jì)數(shù)制的要素:
①、數(shù)碼:用來(lái)表示進(jìn)制數(shù)的元素。比如二進(jìn)制數(shù)的數(shù)碼為:0,1。十進(jìn)制數(shù)的數(shù)碼為:0,1,2,3,4,5,6,7,8,9。十六進(jìn)制數(shù)的數(shù)碼為:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
②、基數(shù):數(shù)碼的個(gè)數(shù)。比如二進(jìn)制數(shù)的基數(shù)為2。十進(jìn)制數(shù)的基數(shù)為10。十六進(jìn)制數(shù)的基數(shù)為 16.
③、位權(quán):數(shù)制中每一固定位置對(duì)應(yīng)的單位值稱為位權(quán)。例如十進(jìn)制第2位的位權(quán)為10,第3位的位權(quán)為100;而二進(jìn)制第2位的位權(quán)為2,第3位的位權(quán)為4,對(duì)于 N進(jìn)制數(shù),整數(shù)部分第 i位的位權(quán)為N^(i-1),而小數(shù)部分第j位的位權(quán)為N^-j。
那么我們可以說(shuō):每個(gè)數(shù)碼所表示的數(shù)值=該數(shù)碼值 * 所處位置的位權(quán)。上面的內(nèi)容概括起來(lái)可以看一下下面這張圖:
比如十進(jìn)制數(shù):(123.45)10=1×102+2×101+3×100+4×10-1+5×10-2
二進(jìn)制數(shù):(1010)2 =l× 23+0 × 22+l× 21+0 × 20=(10)10
十六進(jìn)制數(shù):(BAD)16 =11× 162+10×161+13×160=(2989)10
2、二進(jìn)制轉(zhuǎn)換成其他進(jìn)制
①、二進(jìn)制(Binary)——>十進(jìn)制(Decimal)
訣竅:以小數(shù)點(diǎn)為界,整數(shù)位從最后一 位(從右向左)開始算,依次列為第0、1、2、3………n,然后將第n位的數(shù)(0或1)乘以2的n-1次方,然后相加即可得到整數(shù)位的十進(jìn)制數(shù);小數(shù)位則 從左向右開始算,依次列為第1、2、3……..n,然后將第n位的數(shù)(0或1)乘以2的-n次方,然后相加即可得到小數(shù)位的十進(jìn)制數(shù)(按權(quán)相加法)。
例子:將二進(jìn)制數(shù)(10.10101)2轉(zhuǎn)化為十進(jìn)制數(shù)。
(10.10101)2=(1x21+0x20+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(2+0+0.5+0+0.125+0+0.03125)10=(2.65625)10
②、二進(jìn)制(Binary)——>十六進(jìn)制(Hex)
訣竅:因?yàn)槊克奈欢M(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制數(shù),所以,以小數(shù)點(diǎn)為界,整數(shù)位則將二進(jìn)制數(shù)從右向左每4位一隔開,不足4位的在左邊用0填補(bǔ)即可;小數(shù)位則將二進(jìn)制數(shù)從左向右每4位一隔開,不足4位的在右邊用0填補(bǔ)即可。
例子:將二進(jìn)制數(shù)(10.10101)2轉(zhuǎn)化為十六進(jìn)制數(shù)。
(10.10101)2=(0010.1010 1000)2=(2.A8)16
3、十進(jìn)制轉(zhuǎn)換成其他進(jìn)制
①、十進(jìn)制(Decimal)——>二進(jìn)制(Binary)
訣竅:以小數(shù)點(diǎn)為界,整數(shù)部分除以2,然后取每次得到的商和余數(shù),用商繼續(xù)和2相除,直到商小于2。然后把第一次得到的余數(shù)作為二進(jìn)制的個(gè)位,第二次得到的余數(shù)作為二進(jìn)制的十位,依次類推,最后一次得到的小于2的商作為二進(jìn)制的最高位,這樣由商+余數(shù)組成的數(shù)字就是轉(zhuǎn)換后二進(jìn)制的值(整數(shù)部分用除2取余法);小數(shù)部分則先乘2,然后獲得運(yùn)算結(jié)果的整數(shù)部分,將結(jié)果中的小數(shù)部分再次乘2,直到小數(shù)部分為零。然后把第一次得到的整數(shù)部分作為二進(jìn)制小數(shù)的最高位,后續(xù)的整數(shù)部分依次作為低位,這樣由各整數(shù)部分組成的數(shù)字就是轉(zhuǎn)化后二進(jìn)制小數(shù)的值(小數(shù)部分用乘2取整法)。
需要說(shuō)明的是,有些十進(jìn)制小數(shù)無(wú)法準(zhǔn)確的用二進(jìn)制進(jìn)行表達(dá),所以轉(zhuǎn)換時(shí)符合一定的精度即可,這也是為什么計(jì)算機(jī)的浮點(diǎn)數(shù)運(yùn)算不準(zhǔn)確的原因。
例子1:將十進(jìn)制數(shù)(93)10轉(zhuǎn)換成二進(jìn)制數(shù)。
93/2=46……….1
46/2=23……….0
23/2=11……….1
11/2=5…………1
5/2=2…………...1
2/2=1……………0
(93)10=(1011101)2
例子2:將十進(jìn)制數(shù)(0.3125)10轉(zhuǎn)換成二進(jìn)制數(shù)。
0.3125x2 = 0 . 625
0.625x2 = 1 .25
0.25x2 = 0 .5
0.5x2 = 1 .0
(0.3125)10=(0.0101)2
②、十進(jìn)制(Decimal)——>十六進(jìn)制(Hex)
訣竅:方法同十進(jìn)制轉(zhuǎn)化成二進(jìn)制類似。以小數(shù)點(diǎn)為界,整數(shù)部分除以16,然后取每次得到的商和余數(shù),用商繼續(xù)和16相除,直到商小于16。然后把第一次得到的余數(shù)作為十六進(jìn)制的個(gè)位,第二次得到的余數(shù)作為十六進(jìn)制的十位,依次類推,最后一次得到的小于16的商作為十六進(jìn)制的最高位,這樣由商+余數(shù)組成的數(shù)字就是轉(zhuǎn)換后十六進(jìn)制的值(整數(shù)部分用除16取余法); 小數(shù)部分則先乘16,然后獲得運(yùn)算結(jié)果的整數(shù)部分,將結(jié)果中的小數(shù)部分再次乘16,直到小數(shù)部分為零。然后把第一次得到的整數(shù)部分作為十六進(jìn)制小數(shù)的最高位,后續(xù)的整數(shù)部分依次作為低位,這樣由各整數(shù)部分組成的數(shù)字就是轉(zhuǎn)化后十六進(jìn)制小數(shù)的值(小數(shù)部分用乘16取整法)。
例子1:將十進(jìn)制數(shù)(93)10轉(zhuǎn)換成十六進(jìn)制數(shù)。
93/16=5…………13(D)
(93)10=(5D)16
例子2: 將十進(jìn)制數(shù)(0.3125)10轉(zhuǎn)換成十六進(jìn)制數(shù)。
0.3125x16 = 5 .0
(0.3125)10=(0.5)16
4、十六進(jìn)制轉(zhuǎn)換成其他進(jìn)制
①、十六進(jìn)制(Hex)——>二進(jìn)制(Binary)
訣竅:十六進(jìn)制轉(zhuǎn)換成二進(jìn)制與二進(jìn)制轉(zhuǎn)換成十六進(jìn)制相反。每一位十六進(jìn)制數(shù)對(duì)應(yīng)四位二進(jìn)制數(shù)
例子1:將十六進(jìn)制數(shù)(A7)16轉(zhuǎn)換成二進(jìn)制數(shù)。
(A7)16=(A 7)16=(1010 0111)2=(10100111)2
例子2:將十六進(jìn)制數(shù)(0.D4)16轉(zhuǎn)換成二進(jìn)制數(shù)。
(0.D4)16=(0. D 4)16=(0. 1101 0100)2=(0.110101)2
②、十六進(jìn)制(Hex)——>十進(jìn)制(Decimal)
訣竅:方法同二進(jìn)制轉(zhuǎn)換成十進(jìn)制類似。以 小數(shù)點(diǎn)為界,整數(shù)位從最后一位(從右向左)開始算,依次列為第0、1、2、3………n,然后將第n位的數(shù)(0-9,A-F)乘以16的n-1次方,然后相 加即可得到整數(shù)位的十進(jìn)制數(shù);小數(shù)位則從左向右開始算,依次列為第1、2、3……..n,然后將第n位的數(shù)(0-9,A-F)乘以16的-n次方,然后相 加即可得到小數(shù)位的十進(jìn)制數(shù)(按權(quán)相加法)。
例子1:將十六進(jìn)制數(shù)(A7)16轉(zhuǎn)換成十進(jìn)制數(shù)。
(A7)16=(10x161+7x160)10=(160+7)10=(167)10
例子2:將十六進(jìn)制數(shù)(0.D4)16轉(zhuǎn)換成十進(jìn)制數(shù)。
(0.D4)16=(0+13x16-1+4x16-2)10=(0+0.8125+0.015625)10=(0.828125)10
5、總結(jié)
①. 其他進(jìn)制轉(zhuǎn)十進(jìn)制:將二進(jìn)制數(shù)、十六進(jìn)制數(shù)的各位數(shù)字分別乘以各自基數(shù)的(N-1)次方,其相加之和便是相應(yīng)的十進(jìn)制數(shù),這是按權(quán)相加法。
②. 十進(jìn)制轉(zhuǎn)其他進(jìn)制:整數(shù)部分用除基取余法,小數(shù)部分用乘基取整法,然后將整數(shù)與小數(shù)部分拼接成一個(gè)數(shù)作為轉(zhuǎn)換的最后結(jié)果。
③. 二進(jìn)制轉(zhuǎn)十六進(jìn)制:從小數(shù)點(diǎn)位置開始,整數(shù)部分向左,小數(shù)部分向右,每四位二進(jìn)制為一組用一位十六進(jìn)制的數(shù)字來(lái)表示,不足四位的用0補(bǔ)足。
④. 十六進(jìn)制轉(zhuǎn)二進(jìn)制:每一位十六進(jìn)制對(duì)應(yīng)每四位二進(jìn)制,不足用0補(bǔ)足。
總結(jié)
以上是生活随笔為你收集整理的乘基取整法是什么_深入理解计算机系统(六):进制间的转换原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: github设置中文_静态博客托管图片至
- 下一篇: android win10驱动安装失败,