C语言实现二进制到十进制

简介: C语言实现二进制到十进制

在计算机科学中,二进制是一种非常基本的数制。它只使用0和1两个数字来表示所有的数值信息,这也是计算机内部处理和存储数据的方式。然而,对于我们人类来说,更熟悉的是十进制数制,即使用0到9的十个数字。因此,在某些情况下,我们需要将二进制数转换为十进制数,以便我们能更好地理解和使用它们。
在C语言中,我们可以使用一些内置的函数来实现二进制到十进制的转换。但是,如果我们想要自己实现这个功能,就需要了解二进制和十进制之间的转换原理。

我们需要理解二进制的基本概念。在二进制系统中,每一个位置(位)都有其特定的值。从右向左,第一个位置的值是2^0,第二个位置的值是2^1,第三个位置的值是2^2,以此类推。所以,对于任何给定的二进制数,我们可以通过将每个位的值乘以其对应的2的幂次,然后将结果相加,得到该二进制数对应的十进制数。
例如,二进制数"1011"可以按照以下步骤转换为十进制数:
- 第一位(从右向左):1 * 2^0 = 1
- 第二位:1 * 2^1 = 2
- 第三位:0 * 2^2 = 0
- 第四位:1 * 2^3 = 8
将这些结果相加,我们得到:1 + 2 + 0 + 8 = 11。所以,二进制"1011"对应的十进制数是11。
在C语言中,我们可以编写一个函数来实现上述的转换过程。这个函数需要接收一个二进制字符串作为输入,然后通过遍历这个字符串的每一位,计算对应的十进制值,并将这些值累加起来,最后返回累加的结果。
以下是一个简单的C语言函数,实现了上述的功能:

```c
#include 
#include 
int binaryToDecimal(char *binary) {
    int length = strlen(binary);
    int decimal = 0;
    for(int i = 0; i < length; i++) {
        if(binary[i] == '1') {
            decimal += pow(2, length - i - 1);
        } else if(binary[i] != '0') {
            // 输入的不是有效的二进制数
            return -1;
        }
    }
    return decimal;
}
```


这个函数首先获取输入二进制串的长度。然后,它遍历这个串的每一位。如果当前位是'1',那么它就将2的相应幂次加到结果上;如果当前位不是'0'也不是'1',那么它就返回-1,表示输入的不是有效的二进制数。最后,当所有的位都处理完后,函数返回计算出的十进制数。

目录
相关文章
|
3月前
|
C语言
c语言点分十进制IP转整型
c语言点分十进制IP转整型
|
3月前
|
存储 C语言
C语言实现十进制转化为十六进制-------数组,switch语句,while循环语句
C语言实现十进制转化为十六进制-------数组,switch语句,while循环语句
|
1月前
|
存储 C语言
十进制转二进制,C语言的必备技能
十进制转二进制,C语言的必备技能
|
1月前
|
存储 C语言
C语言十进制转二进制
C语言十进制转二进制
26 0
|
2月前
|
算法 搜索推荐 程序员
C语言第十七练——输出二进制中1的个数
C语言第十七练——输出二进制中1的个数
22 0
|
2月前
|
自然语言处理 Rust 编译器
【0到1的设计之路】从C语言到二进制程序
【0到1的设计之路】从C语言到二进制程序
53 0
|
3月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
25 0
|
3月前
|
C语言
[C语言][题]两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同。
[C语言][题]两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同。
19 1
|
4月前
|
C语言
C语言第四十弹---两个整数二进制位不同的个数
C语言第四十弹---两个整数二进制位不同的个数
|
4月前
|
机器学习/深度学习 C语言
c语言编程练习题:7-47 二进制的前导的零
c语言编程练习题:7-47 二进制的前导的零
19 0