其他進製與十進位制互相轉化如何計算

2021-09-24 21:01:46 字數 1291 閱讀 9903

首先說個很好記的一句話:幾進製,滿幾進一

比如二進位制如何 表示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,...