十進制轉二進制使用的是除以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,輸出所有的數值。
運行結果運行分析
以輸入數值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,轉換的僅為正整數,不能轉換負數或小數。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!