十進制轉二進制
十進制轉二進制使用的是除以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,轉換的僅為正整數,不能轉換負數或小數。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。