10進製轉2進製

2021-08-22 04:38:07 字數 1855 閱讀 9705

題目:將10進製數字轉換為2進製。

思考:進製轉換有三種情況。

十進位制轉二,八,十六進製制

三種轉化的方法類似,我重點說十進位制轉二進位制的方法,其餘兩種情況可以模擬。

①十進位制轉二進位制

方法:10進製數字,整數部分除2後每次餘數反向取;小數部分乘2直到小數部分為0(特殊情況取位數),將整數部分正向取。

例子:十進位制9轉化成二進位制1001

②十進位制轉八進位制

方法:10進製數字,整數部分除8後每次餘數反向取;小數部分乘8直到小數部分為0(特殊情況取位數),將整數部分正向取。

③十進位制轉十六進製制

方法:10進製數字,整數部分除16後每次餘數反向取;小數部分乘16直到小數部分為0(特殊情況取位數),將整數部分正向取。

二,八,十六進製制轉十進位制

方法:三種方法類似,都是使用按權展開式

例子:權,簡單的理解就是每一位的值。

二進位制1000011轉化成10進製的67

八進位制1000011轉化成10進製的262153

十六進製制1000011轉化成10進製的16777233

二進位制與八,十六進製制之間轉換

方法:用三位二進位制表示一位八進位制,用四位二進位制表示一位十六進製制數

①二進位制和八進位制之間的轉換

二進位制轉換成八進位制方法:取三合一法,即從二進位制的小數點為分界點,向左(向右)每三位取成一位,接著將這三位二進位制按權相加,得到的數就是一位八位二進位制數,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的八進位制數。如果向左(向右)取三位後,取到最高(最低)位時候,如果無法湊足三位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足三位。

例子:1101.1轉換為八進位制為15.4

八進位制轉換成二進位制方法:取一分三法,即將一位八進位制數分解成三位二進位制數,用三位二進位制按權相加去湊這位八進位制數,小數點位置照舊。

例子:八進位制數67.54轉換為二進位制數為110111.101100,即110111.1011

②二進位制和十六進製制之間的轉換

二進位制轉十六進製制方法:取四合一法,即從二進位制的小數點為分界點,向左(向右)每四位取成一位,接著將這四位二進位制按權相加,得到的數就是一位十六位二進位制數,然後,按順序進行排列,小數點的位置不變,得到的數字就是我們所求的十六進製制數。如果向左(向右)取四位後,取到最高(最低)位時候,如果無法湊足四位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足四位。

例子:二進位制11101001.1011轉換為十六進製制為e9.b

十六進製制轉二進位制方法:取一分四法,即將一位十六進製制數分解成四位二進位制數,用四位二進位制按權相加去湊這位十六進製制數,小數點位置照舊。

例子:十六進製制6e.2轉換為二進位制為01101110.0010即110110.001

**:

#include

#define n 100

int main()

; printf("輸入乙個十進位制數字:");

scanf("%d",&n);

for(i=0;;i++)

printf("二進位制是:");

for(j=i;j>=0;j--)

printf("\n");

}

結果截圖:思考:10進製轉8,16進製制之中只需要將for語句中間的格式改變即可。

其他進製轉化的**和思路會在之後的部落格中介紹。

C 實現10進製轉2進製

這幾天在複習計算機原理,看到二進位制忽然想到二進位制轉10進製的公式,然後轉念一想10進製轉二進位制的公式好像沒印象,那索性自己寫出來。結果學渣的我發現,並不能寫出來!什麼數列,對數,xx函式忘得一乾二淨,而且需要有需要判斷的地方,於是崩潰了,以前代數題並沒寫過條件啊 索性用c 搞出來 雖然在c 裡...

10進製轉2進製和16進製制

看到論壇說面試遇到,就嘗試寫 public class test public static string tobinary int n return temp.reverse tostring 10進製轉16進製制 將給定的十進位制整數除以基數16,餘數便是等值的16進製制的最低位。將上一步的商再...

bitset 10進製轉2進製 2進製各種操作

bitset儲存二進位制數字。bitset就像乙個bool型別的陣列一樣,但是有空間優化。bitset中的每個元素都能單獨被訪問,例如對於乙個叫做a的bitset,表示式a 3 訪問了它的第4個元素,就像陣列一樣。但是輸出單獨訪問結果不能用printf,和bitset有關的輸出都用cout 另外bi...