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,表示输入的不是有效的二进制数。最后,当所有的位都处理完后,函数返回计算出的十进制数。

目录
相关文章
|
5月前
|
C语言
C语言---二进制位置0或者置1
C语言---二进制位置0或者置1
|
5月前
|
C语言
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
|
5月前
|
C语言
C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
|
5月前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
5月前
|
存储 C语言
C语言---求一个整数存储在内存中的二进制中1的个数--3种方法
C语言---求一个整数存储在内存中的二进制中1的个数--3种方法
|
6月前
|
C语言
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)(下)
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)
41 0
|
6月前
|
C语言
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)(上)
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)
111 0
|
6月前
|
C语言
【C语言】求一个整数的二进制序列中1的个数的三种方法
【C语言】求一个整数的二进制序列中1的个数的三种方法
109 0
|
6月前
|
存储 C语言
十进制转二进制,C语言的必备技能
十进制转二进制,C语言的必备技能
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3