注册 登录
编程论坛 C语言论坛

十进制转二进制

qiqicai 发布于 2021-04-10 22:12, 1340 次点击
#include <stdio.h>
#include <math.h>
 
long long convertDecimalToBinary(int n);
 
int main()
{
    int n;
    printf("输入一个十进制数: ");
    scanf("%d", &n);
    printf("十进制数 %d 转换为二进制位 %lld", n, convertDecimalToBinary(n));
    return 0;
}
 
long long convertDecimalToBinary(int n)
{
    long long binaryNumber = 0;
    int remainder, i = 1, step = 1;
 
    while (n!=0)
    {
        remainder = n%2;
        printf("Step %d: %d/2, 余数 = %d, 商 = %d\n", step++, n, remainder, n/2);
        n /= 2;
        binaryNumber += remainder*i;                               // 这个为什么不用判断n=0的情况
        i *= 10;
    }
    return binaryNumber;                                       


                                                                     
                                                                 

      
}

[此贴子已经被作者于2021-4-10 22:57编辑过]

3 回复
#2
夏天q2021-04-11 09:31
while (n!=0)

看这里,n=0是不会进入循环的 所以不用判断n=0的情况
#3
qiqicai2021-04-11 10:42
回复 2楼 夏天q
它这里并没有陈述n=0的情况  如果输入的十进制数是0 我运行后却能正确输出二进制也是0   这是为什么?
#4
夏天q2021-04-11 11:13
回复 3楼 qiqicai
long long convertDecimalToBinary(int n)
{
    long long binaryNumber = 0;
    int remainder, i = 1, step = 1;
 
    while (n!=0)
    {
        remainder = n%2;
        printf("Step %d: %d/2, 余数 = %d, 商 = %d\n", step++, n, remainder, n/2);
        n /= 2;
        binaryNumber += remainder*i;                               // 这个为什么不用判断n=0的情况
        i *= 10;
    }
    return binaryNumber;                                       


                                                                     
                                                                 

      
}

中定义了变量binaryNumber的值为0;
  long long binaryNumber = 0;

如果n=0 则不进入循环 变量binaryNumber的值不会变 依旧为0
所以    return binaryNumber;   返回0
恰好0的二进制为0
1