2.1 KiB
2.1 KiB
C 程序:将二进制数转换成十进制数
原文:https://overiq.com/c-examples/c-program-to-convert-a-binary-number-to-a-decimal-number/
最后更新于 2020 年 9 月 24 日
下面是一个将二进制数转换成十进制数的 C 程序。
/*******************************************************
* Program to convert a binary number to decimal number
********************************************************/
#include<stdio.h> // include stdio.h
#include<math.h> // include stdio.h
int main()
{
long int bin, remainder, decimal = 0, i = 0;
printf("Enter a binary number: ");
scanf("%d", &bin);
while(bin != 0)
{
remainder = bin % 10;
decimal += remainder * (int)pow(2, i++);
bin = bin / 10;
}
printf("Decimal: %d", decimal);
return 0;
}
**预期输出:**第一次运行:
Enter a binary number: 100
Decimal: 4
第二次运行:
Enter a binary number: 1000011
Decimal: 67
它是如何工作的
以下是将二进制数转换为十进制数的步骤:
例 1 :将二进制数100转换为十进制等效值。
=> ( 1 * 2^2 ) + ( 0 * 2^1 ) + ( 0 * 2^0 )
=> 4 + 0 + 0
=> 4
例 2 :将二进制数1001转换为其十进制等效值。
=> ( 1 * 2^3 ) + ( 0 * 2^2 ) + ( 0 * 2^1 ) + ( 1 * 2^0 )
=> 8 + 0 + 0 + 1
=> 9
下表显示了循环每次迭代时发生的情况(假设bin = 10101):
| 循环 | 剩余物 | 小数 | 容器 |
|---|---|---|---|
| 第一次迭代后 | remainder = 10101 % 10 = 1 |
decimal = 0 + 1 * (2^0) = 1 |
bin = 10101 / 10 = 1010 |
| 第二次迭代后 | remainder = 1010 % 10 = 0 |
decimal = 1 + 0 * (2^1) = 1 |
bin = 1010 / 10 = 101 |
| 第三次迭代后 | remainder = 101 % 10 = 1 |
decimal = 1 + 1 * (2^2) = 5 |
bin = 101 / 10 = 10 |
| 第四次迭代后 | remainder = 10 % 10 = 0 |
decimal = 5 + 0 * 2^3 = 5 |
bin = 10 / 10 = 1 |
| 第五次迭代后 | remainder = 1 % 10 = 1 |
decimal = 5 + 1 * (2^4) = 21 |
bin = 1 / 10 = 0 |