c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

c语言二进制如何转换十进制

周琼 2023-07-07编程经验
什么是二进制在一个比特(bit)中只有两种可能的值,一种是0,另一种是1。我们通常称这种值为二进制。二进制是计算机中非常有用的一种数字系统,因为计算机只能以二进制的形式处理数字。在计算机世

什么是二进制

在一个比特(bit)中只有两种可能的值,一种是0,另一种是1。我们通常称这种值为二进制。二进制是计算机中非常有用的一种数字系统,因为计算机只能以二进制的形式处理数字。在计算机世界中,二进制诠释为一系列的电信号和器件开关状态。

#include 
int main()
{
    int num = 0b1010; // 通过前缀0b表示该值是二进制
    printf("%d", num); // 输出结果为10
}

二进制转化为十进制

将二进制数转换为十进制数有很多方法,其中一个常用的方法就是乘法法。将二进制数拆分为每一位上的数字,然后按位权计算,最后将所有位的计算结果相加即可得到十进制数。

#include 
#include 
int binaryToDecimal(long long n)
{
    int decimal = 0;
    int p = 0;
    while (n != 0)
    {
        decimal += (n % 10) * pow(2, p);
        ++p;
        n /= 10;
    }
    return decimal;
}
int main()
{
    long long binary;
    printf("请输入一个二进制数: ");
    scanf("%lld", &binary);
    printf("十进制数为: %d", binaryToDecimal(binary));
}

二进制转化为十进制-位运算

算法步骤与乘法法类似,只不过是通过位运算来实现。对于一个二进制数,从右往左依次遍历每一位,如果该位是1,就将2的n次方加入到十进制数的结果中,n表示该位的位权,否则就不做处理。位运算的效率相比乘法法更高,因为运算速度更快。

#include 
int binaryToDecimal(int n)
{
    int decimal = 0, p = 0;
    while (n != 0)
    {
        if (n % 10 == 1)
        {
            decimal += 1 << p;
        }
        ++p;
        n /= 10;
    }
    return decimal;
}
int main()
{
    int binary;
    printf("请输入一个二进制数: ");
    scanf("%d", &binary);
    printf("十进制数为: %d", binaryToDecimal(binary));
}

十进制转化为二进制

将十进制数转化为二进制数也有多种方法,最常用的方法是将该数不断地除以2,将每次的余数逆序排列就是其对应的二进制数。与二进制转化为十进制的乘法法相似,这种方法也有一种叫做除2取余法的算法。

#include 
int decimalToBinary(int decimal)
{
    int binary = 0, p = 1;
    while (decimal != 0)
    {
        binary += (decimal % 2) * p;
        p *= 10;
        decimal /= 2;
    }
    return binary;
}
int main()
{
    int decimal;
    printf("请输入一个十进制数: ");
    scanf("%d", &decimal);
    printf("二进制数为: %d", decimalToBinary(decimal));
}

文章评论