首先說個很好記的一句話:幾進製,滿幾進一
比如二進位制如何 表示3
十進位制 : 0 1 2 3
二進位制: 0 1 10 11
那在看看別的進製
十進位制 : 6 7 8 9
八進位制: 6 7 10 11
十進位制 : 8 9 10 11 ... 15 16 17
十六進製制: 8 9 a b ... f 10 11
這是當數值比較小時,可能比較輕鬆的做轉化,那麼當數值比較大的時候該怎麼快速計算呢//先看兩個例子,二進位制轉十進位制
system.out.println(0b10); //0 * 2^0 + 1*2^1=2
system.out.println(0b0110); // 0 * 2^0 + 1*2^1 + 1*2^2+ 0*2^3 =6
/*第乙個:個位數上為"0",0 * 2^0=0 ; 十位數上為"1" 1*2^1=2 得出結果為2
第二個:個位數上為"0",0 * 2^0=0 ; 十位數上為"1" 1*2^1=2 百位數上為:"1" 1*2^2
千位數上為:"0" 0*2^3 它們相加得出結果和為6.
*/
我們可以用到這句公式:
其他進製轉化為十進位制也一樣可以用這個公式.
system.out.println(0110); // 0 * 8^0 + 1*8^1+1*8^2 = 72
system.out.println(0x15); // 5* 16^0 + 1* 16^1 = 21
那麼十進位制的數如何轉化為其他進製的數呢例:10轉為二進位制 10/2 =5 (沒有餘數 記0) 5/2= 2 餘1(有餘數記1) 2/2=1(沒有餘數記0) 剩下乙個1不能除了
那麼從下往上看的出來的數為:1010
126轉為八進位制 126/8 =15 (有餘數 記6) 15/8= 1 餘7(有餘數記7) 剩下乙個1不能除了 記1
那麼從下往上看的出來的數為:176
526轉為十六進製制 300/16 =18 (有餘數 記12) 18/16= 1 (有餘數記2) 剩下乙個1不能除了 記1
那麼從下往上看的出來的數為:12c
以上就是進製轉化的簡單計算方法,希望對大家有點幫助 PHP演算法 十進位制二進位制互相轉化(含小數)
1 二進位制轉換十進位制 原理 小數點前或者整數要從右到左用二進位制的每個數去乘以2的相應次方並遞增,小數點後則是從左往右乘以二的相應負次方並遞減。例 10101.1011 1 20 0 21 1 22 0 23 1 24.1 2 1 0 2 2 1 2 3 1 2 4 1 0 4 0 16 0.5...
關於各種進製之間互相轉化 以十進位制為橋梁
做為程式設計師經常會涉及到各種進製之間互相轉化的問題,下面我就以我們常見的二進位制,八進位制,十進位制,十六進製制的互相轉化的問題做一簡單的 二進位制的表現形式 二進位制是計算機能夠識別的語言,任何資料都要在計算機底層轉化成二進位制,計算機才可以進行簡單或者複雜的任何運算。所以二進位制是計算機的最基...
十進位制與八進位制互相轉換
一 十進位制轉八進位制 與十進位制轉二進位制方法相似,用十進位制數除以8取餘數,商再除以8,直到商為0,餘數由下到上依次排列即可,如136 136 8 17 餘0 17 8 2 餘1 2 8 0 餘2 所以八進位制數為210 再看小數部分,與轉二進位制相同,這裡是乘八取整法,也就是說小數部分乘以8,...