c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言如何将十进制转为二进制

更新时间:2023-07-15

第一段:直接除以二法

将十进制数除以2,得到的商和余数依次排列,直到商为零。如:十进制数43转二进制,其过程如下图所示:

#include 
void DecToBin1(int n)
{
    int bit[32] = {0}; 
    int i = 0;
    while (n > 0)
    {
        bit[i++] = n % 2;
        n /= 2;
    }
    for (i = 31; i >=0; i--)    
        printf("%d", bit[i]);
}
int main()
{
    int n;
    scanf("%d", &n);
    DecToBin1(n);
    return 0;
}

第二段:移位法

将十进制数不断右移,直到最后一位为1时停止,过程中各个二进制位是余数,逆序排列即可。如:十进制数57转二进制,其过程如下图所示:

#include 
void DecToBin2(int n)
{
    int i;
    for (i = 31; i >= 0; i--)
    {
        if (n & (1 << i))
            break;
    }
    for (; i >= 0; i--)
    {
        if (n & (1 << i))
            printf("1");
        else
            printf("0");
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    DecToBin2(n);
    return 0;
}

第三段:位运算法

用位运算代替除法,用位运算代替取模运算,适用于数据量大的情况。如:十进制数36转二进制,其过程如下图所示:

#include 
void DecToBin3(int n)
{
    int i;
    for (i = 31; i >= 0; i--)
    {
        if (n >> i & 1)
            printf("1");
        else
            printf("0");
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    DecToBin3(n);
    return 0;
}

第四段:总结

本文主要介绍了三种将十进制转为二进制的方法,分别是直接除以二法、移位法和位运算法。直接除以二法思路简单,代码实现容易,但十进制数较大时会超时。移位法适用于较大的数,但其缺点是无法得知二进制数长度。位运算法较为高效,且代码简洁,但要求程序员熟悉位运算的操作规则。在实际应用中,根据处理的数据情况和具体的需求而选择不同的算法。