十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)采用"除2取余,逆序排列"法。
具體做法是:
用2整除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);
再用2去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為小于1時(shí)為止,
然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位,依次排列起來(lái)。
代碼如下
#include <stdio.h>
int main(){
int num;
int wei = 1; //位數(shù)
long long sum =0;
printf("請(qǐng)輸入數(shù)字:");
scanf("%d",&num) ;
while(1){
int yushu = num % 2;
sum = sum + yushu*wei;
wei = wei*10;
if(num < 2){
sum = sum + num*wei;
break;
}
}
printf("%d",sum);
return 0;
}
注意
int yushu = num % 2;//求出余數(shù)
num = num / 2;
/求出除以二之后的數(shù)值作為下一次取余的基數(shù)sum = sum + yushu*wei;
//利用這個(gè)式子可以把求出來(lái)的余數(shù)倒序表示出來(lái),即二進(jìn)制數(shù)wei = wei*10;
使位數(shù)往前一位if(num < 2)
sum = sum + num*wei;
即把最后無(wú)法再除2的數(shù)放到首位,就把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)
總結(jié):
(1)這個(gè)demo的重點(diǎn)在于將一串?dāng)?shù)字倒序表示出來(lái)
(2)倒敘表達(dá)還可以用數(shù)組來(lái)實(shí)現(xiàn)。
(3)十進(jìn)制轉(zhuǎn)為其他進(jìn)制的方法與二進(jìn)制的相似。