關於10進位制轉2進位制的C語言程式碼

譚梓健發表於2019-04-01

大多數人學過怎麼將10進位制數轉2進位制數的數學計算方法,筆者下面提供C語言的程式設計思想和程式碼。
任何自然數的10進位制數都是它本身。2進位制數只有1和0兩個數,且逢2進1。舉個例子,1的二進位制數為1,二的二進位制數為10,3的二進位制數為11,4的二進位制數為100…以此類推;

C語言程式設計思想:
我們寫一個數的二進位制編碼時,是將其與2相除後得到一個餘數,利用短除法,再按從下到上的順序依次寫出一串數。(參考下圖)
C語言中求餘數直接用“ % ”即可。但此時求出的餘數是最高位的,我們寫時需要放在最後,這裡就可以用一個陣列將求出的餘數存起來,輸出時只需要從陣列裡面最後往前輸出即可。
我們看下圖會發現,每次做模(%)運算,被除數都會改變,所以n的值就要不斷改變(n為我們要求的數)。C語言中賦值符號可完成這個功能:n=n/2 (將n除2的值賦給你n,這樣就不斷改變了n的值。也可以寫成n/=2;)
這樣函式基本完成。

#include<stdio.h>
int main()
{
    int n,i,a[100],t;
    while(scanf("%d",&n)!=EOF)//多組輸入
    {
        i=0;
        while(n>0)//用n是否大於零來決定迴圈次數
        {
            a[i]=n%2;//存陣列
            n/=2;//改變n
            i++;//計算迴圈次數,方便統計a陣列中的元素個數

        }
        for(i--;i>=0;i--)//自己模擬一次,就知道為什麼i--放在for第一個位置了
            printf("%d",a[i]);
        printf("\n");
    }
    return 0;
}
``
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20190401223322673.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDQ0Nw==,size_16,color_FFFFFF,t_70)

相關文章