C 语言二进制转十进制数

17 Mar 2025 | 5 分钟阅读

本节将讨论二进制数到十进制数的转换。在深入概念之前,我们需要了解二进制数和十进制数。我们知道,计算机无法理解人类书写的单词或数字。相反,它只理解 0 和 1。例如,当我们在计算机上输入单词或数字时,各种软件或编译器会帮助将这些数字或单词转换为二进制形式(0 和 1 位)。这样,计算机就可以轻松理解它们。

Binary to Decimal Number in C

二进制数

二进制数是一种使用 0 和 1 位组合来表示计算机中存储的信息或数据的数字。它也被称为基数为 2 的计数系统,因为它有两个位,即 0 和 1。这些是二进制数(0 和 1)1001、1010、1101、1111、1010101 等。

十进制数

十进制数是包含 0 到 9 这 10 个数字的数。它的基数是 10,因为它包含 10 个数字(0、1、2、3、4、5、6、7、8、9),并使用这十个数字来表示或构成整个数字。

二进制转十进制算法

  1. 将二进制数作为输入。
  2. 将数字除以 10 并将余数存储在变量 rem 中。
  3. decimal_num = decimal_num + rem * base;
    最初,decimal_num 为 0,base 为 1,其中 rem 变量存储数字的余数。
  4. 将原始数字的商除以 10。
  5. 将 base 乘以 2。
  6. 打印二进制数的十进制值。

使用 while 循环将二进制数转换为十进制数

让我们看一个 C 语言程序,使用 while 循环将二进制数(0 和 1 的组合)转换为十进制数。

program.c

输出

Enter a binary number with the combination of 0s and 1s
1101
 The binary number is 1101
 The decimal number is 13

代码解释:如上程序所示,它会提示用户输入一个二进制数(0 和 1),并将其存储在变量 num 中。在每次迭代中,while 循环会检查二进制数的条件,并验证给定的数字不应小于 0;否则,循环将退出。

while 循环的迭代如下:

第一次迭代

rem = 1101 % 10 => 1

decimal_num = 0 + 1 * 1 => 1 (decimal_val = 0, rem = 1, & base = 1)

num = 1101 / 10 => 110

base = 1 * 2 => 2

第二次迭代

rem = 110 % 10 => 0

decimal_num = 1 + 0 * 2 => 1 (decimal_val = 1, rem = 0, & base = 2)

num = 110 / 10 => 11

base = 2 * 2 => 4

第三次迭代

rem = 11 % 10 => 1

decimal_num = 1 + 1 * 4 => 5 (decimal_val = 1, rem = 1, & base = 4)

num = 11 / 10 => 1

base = 4 * 2 => 8

第四次迭代

rem = 1 % 10 => 1

decimal_num = 5 + 1 * 8 => 1 (decimal_val = 5, rem = 1, & base = 8)

num = 1 / 10 => 0

base = 8 * 2 => 16

使用 for 循环将二进制数转换为十进制数

让我们看一个 C 语言程序,使用 for 循环将二进制数(0 和 1 的组合)转换为十进制数。

decimal.c

输出

Enter the binary number with the combination of 0s and 1s
10010

 The binary number is 10010
 Conversion from binary to decimal number is 18 

使用函数将二进制数转换为十进制数

让我们看一个 C 语言程序,使用用户定义函数将二进制数(0 和 1 的组合)转换为十进制数。

deci.c

输出

Enter the binary number (0s and 1s)
11001
 Conversion of the binary number to decimal number is 25

使用数组和函数将二进制数转换为十进制数

让我们看一个 C 语言程序,使用函数和数组将二进制数(0 和 1 的组合)转换为十进制数。

Decimal2.c

输出

The binary number is 1101
The decimal number of 1101 is 13