摘自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%B6
python實現進制轉換:https://www.cnblogs.com/cookie1026/p/6059766.html
十進制轉二進制
具體做法是:用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的相應次方
小數點后則是從
左往右

所以總結起來通用公式為:
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