二進位計算公式「十進位轉二進位怎麼算」

十進位轉二進位

十進位轉二進位使用的是除以2取餘數的方法,下面以十進位數11為例

11 ÷ 2 = 5 餘數1

5 ÷ 2 = 2 餘數1

2 ÷ 2 = 1 餘數0

1 ÷ 2 = 0 餘數1

首次得到的餘數放在最右,因此轉換為二進位數1011

C語言十進位轉二進位

分析

(1)使用數組存儲二進位,循環數組輸出結果

(2)使用除2取余,使用%。

#include<stdio.h>
int main(void){
    int m,n,i,j;
    int a[16] = {0};
    printf("請輸入一個整數:");
    scanf("%d",&m);
    for(n=0;n<15;n++){
        i = m % 2;
        j = m / 2;
        m = j;
        a[n] = i;
    }
    for(n=15;n>=0;n--){
        printf("%d",a[n]);
        if(n%4 == 0){
            printf(" ");
        }
    }
    return 0;
}

程序分析

(1)int a[16] = {0},定義了數組a,初始值設定為0。

(2)第一個for循環for(n=0;n<15;n++),循環範圍0-14,設定了數a的初值為0,默認最高位為0,轉換後的二進位數放入數組剩下的元素。

(3)第二個for循環for(n=15;n>=0;n–),循環範圍0-15,輸出所有的數值。

運行結果

C語言實現十進位轉二進位

運行分析

以輸入數值11為例進行分析,輸入11,m=11,進入第一個for循環

(1)n=0,i=m%2=11%2=1,j=m/2=11/2=5,m=j=5,a[0]=1

(2)n=1,i=m%2=5%2=1,j=m/2=5/2=2,m=j=2,a[1]=1

(3)n=2,i=m%2=2%2=0,j=m/2=2/2=1,m=j=1,a[2]=0

(4)n=3,i=m%2=1%2=1,j=m/2=1/2=0,m=j=0,a[3]=1

此時如果輸出數組,結果:1101 0000 0000 0000

進入第二個for循環,使用除2取余法,首次得到的餘數需要放在最右,因此需要逆序輸出數組,每隔四位輸出一個空格。

結果:0000 0000 0000 1011

總結

(1)本例中使用數組存儲二進位位數,但數組大小僅為16,數值過大則不能轉換。

(2)本例中數組初始化為0,轉換後輸出最高位為0,轉換的僅為正整數,不能轉換負數或小數。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/273428.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:06
下一篇 2024-12-17 14:06

相關推薦

發表回復

登錄後才能評論