python 實現進制轉換(二進制轉十進制)

摘自https://baike.baidu.com/item/%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6html

python實現進制轉換:https://www.cnblogs.com/cookie1026/p/6059766.htmlpython

十進制轉二進制

編輯
1. 十進制整數轉換爲二進制整數
十進制整數轉換爲二進制整數採用"除2取餘,逆序排列"法。
具體作法是:用2整除十進制整數,能夠獲得一個商和餘數;再用2去除商,又會獲得一個商和餘數,如此進行,直到商爲小於1時爲止,而後把先獲得的餘數做爲二進制數的低位有效位,後獲得的餘數做爲二進制數的高位有效位,依次排列起來。
十進制整數轉二進制
如:255=(11111111)
如: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(B)
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的相應次方
小數點後則是從 左往右
例如: 二進制數1101.01轉化成 十進制
因此總結起來通用公式爲:
abcd.efg(2)=d*2 0+c*21+b*22+a*23+e*2-1+f*2-2+g*2-3(10)
或者用下面這種方法:
把二進制數首先寫成加權係數展開式,而後按十進制加法規則求和。這種作法稱爲"按權相加"法。
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
再好比:二進制數100011轉成十進制數能夠看做這樣:
數字中共有三個1 即第一位一個,第五位一個,第六位一個,而後對應十進制數即2的0次方+2的1次方+2的5次方, 即
100011=32+0+0+0+2+1=35
相關文章
相關標籤/搜索