十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
具体做法是:
用2整除十进制整数,可以得到一个商和余数;
再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,
然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
代码如下
#include <stdio.h>
int main(){
int num;
int wei = 1; //位数
long long sum =0;
printf("请输入数字:");
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;//求出余数
num = num / 2;
/求出除以二之后的数值作为下一次取余的基数sum = sum + yushu*wei;
//利用这个式子可以把求出来的余数倒序表示出来,即二进制数wei = wei*10;
使位数往前一位if(num < 2)
sum = sum + num*wei;
即把最后无法再除2的数放到首位,就把十进制数转换为二进制数
总结:
(1)这个demo的重点在于将一串数字倒序表示出来
(2)倒叙表达还可以用数组来实现。
(3)十进制转为其他进制的方法与二进制的相似。