十进制整数转换为二进制整数采用"除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)十进制转为其他进制的方法与二进制的相似。