一、二進位制轉十進位制
要從右到左用二進位制的每個數去乘以2的相應次方
例如: 二進位制數1101.01轉化成
十進位制1101.01(2)=1*2
0+0*2
1+1*2
2+1*2
3 +0*2
-1+1*2
-2=1+0+4+8+0+0.25=13.25
所以總結起來通用公式為:
abcd.efg(2)=d*2
0+c*2
1+b*2
2+a*2
3+e*2
-1+f*2
-2+g*2
-3 或者用下面這種方法:
把二進位制數首先寫成加權係數展開式,然後按十進位制加法規則求和。這種做法稱為"按權相加"法。
2的0次方是1(任何數的0
次方都是1,0的0次方無意義)
2的1次方是2
2的2次方是4
2的3次方是8
2的4次方是16
2的5次方是32
2的6次方是64
2的7次方是128
2的8次方是256
2的9次方是512
2的10次方是1024
2的11次方是2048
2的12
次方是4096
2的13
次方是8192
2的14次方是16384
2的15次方是32768
2的16次方是65536
2的17次方是131072
2的18次方是262144
2的19次方是524288
2的20次方是1048576
即:此時,1101=8+4+0+1=13
再比如:二進位制數1000110轉成十進位制數可以看作這樣:
數字中共有三個1 即第二位乙個,第三位乙個,第七位乙個,然後對應十進位制數即2的1次方+2的2次方+2的6次方, 即
1000110=64+0+0+0+4+2+0=70
二、十進位制轉二進位制
1. 十進位制整數轉換為二進位制整數
十進位制整數轉換為二進位制整數採用"除2取餘,逆序排列"法。具體做法是:用2
整除十進位制整數,可以得到乙個商和餘數;再用2去除商,又會得到乙個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。
十進位制整數轉二進位制
如:255=(11111111)b
255/2=127*****餘1
127/2=63*****=餘1
63/2=31*****==餘1
31/2=15*****==餘1
15/2=7*****===餘1
7/2=3*****====餘1
3/2=1*****====餘1
1/2=0*****====餘1
789=1100010101
789/2=394 餘1 第10位
394/2=197 餘0 第9位
197/2=98 餘1 第8位
98/2=49 餘0 第7位
49/2=24 餘1 第6位
24/2=12 餘0 第5位
12/2=6 餘0 第4位
6/2=3 餘0 第3位
3/2=1 餘1 第2位
1/2得0 餘1 第1位
原理:
眾所周知,二進位制的基數為2,我們十進位製化二進位制時所除的2就是它的基數。談到它的原理,就不得不說說關於位權的概念。某進製計數制中各位數字符號所表示的數值表示該數字符號值乘以乙個與數字符號有關的常數,該常數稱為 「位權 」 。位權的大小是以基數為底,數字符號所處的位置的序號為指數的整數次冪。十進位制數的百位、十位、個位、十分位的權分別是10的2次方、10的1次方、10的0次方,10的-1次方。二進位制數就是2的n次冪。
按權展開求和正是非十進位製化十進位制的方法。
下面我們開講原理,舉個十進位制整數轉換為二進位制整數的例子,假設十進位制整數a化得的二進位制數為edcba 的形式,那麼用上面的方法按權展開, 得
a=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4) (後面的和不正是化十進位制的過程嗎)
假設該數未轉化為二進位制,除以基數2得
a/2=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
注意:a除不開二,餘下了!其他的絕對能除開,因為他們都包含2,而a乘的是1,他本是絕對不包含因數2,只能餘下。
商得:b(2^0)+c(2^1)+d(2^2)+e(2^3),再除以基數2餘下了b,以此類推。
當這個數不能再被2除時,先餘掉的a位數在原數低,而後來的餘數數字高,所以要把所有的餘數反過來寫。正好是edcba
2.十進位制小數轉換為二進位制小數
十進位制小數轉換成
二進位制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進位制小數,可以得到積,將積的
整數部分取出,再用2乘餘下的小數部分,又得到乙個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,此時0或1為二進位制的最後一位。或者達到所要求的精度為止。
然後把取出的整數部分按順序排列起來,先取的整數作為二進位制小數的高位有效位,後取的整數作為低位有效位。
十進位制小數轉二進位制
如:0.625=(0.101)b
0.625*2=1.25*****=取出
整數部分1
0.25*2=0.5*****===取出
整數部分0
0.5*2=1**********取出整數部分1
再如:0.7=(0.1 0110 0110...)b
0.7*2=1.4*****===取出整數部分1
0.4*2=0.8*****===取出整數部分0
0.8*2=1.6*****===取出整數部分1
0.6*2=1.2*****===取出整數部分1
0.2*2=0.4*****===取出整數部分0
0.4*2=0.8*****===取出整數部分0
0.8*2=1.6*****===取出整數部分1
0.6*2=1.2*****===取出整數部分1
0.2*2=0.4*****===取出整數部分0
原理:
關於十進位制小數轉換為二進位制小數
假設一十進位制小數b化為了二進位制小數0.ab的形式,同樣按權展開,得
b=a(2^-1)+b(2^-2)
因為小數部分的位權是負次冪,所以我們只能乘2,得
2b=a+b(2^-1)
注意a變成了整數部分,我們取整數正好是取到了a,剩下的小數部分也如此。
值得一提的是,小數部分的按權展開的數字順數正好和整數部分相反,所以不必反向取餘數了。
二進位制與十進位制相互轉換
我們最常見的進製就是十進位制 滿十進一 當這個數字個位比9大的時候 十位加一 個位歸零 就是 9 之後是 10 19 之後是20 二進位制就是滿二進一 就是 1 的 二進位制 還是1,但是2 的二進位制就是10,3的二進位制就是11,4的二進位制就是100 那如何將十進位制正整數轉換成二進位制呢 比...
二進位制與十進位制的相互轉換
思路 單純的談倆二進位制數相加得到 乙個二進位制數有些難度,所以本題可將倆二進位制數s1,s2分別轉換為對應的十進位制數x1,x2,再計算十進位制的相加就簡單多了,最後再講十進位制的結果轉換為對應二進位制即可。所以本題可構造兩個轉換函式doutoten 二進位制轉十進位制函式和tentodou 十進...
二進位制與十進位制的相互轉換(小數)
1 十進位制數轉換為二進位制 小數 a 十進位制數的整數部分 十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 法。具體做法是 用2去除十進位制整數,可以得到乙個商和餘數 再用2去除商,又會得到乙個商和餘數,如此進行,直到商為零時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數...