示例 1: 将二进制数转换为十进制数的 C 程序
// convert binary to decimal #include <stdio.h> #include <math.h> // function prototype int convert(long long); int main() { long long n; printf("Enter a binary number: "); scanf("%lld", &n); printf("%lld in binary = %d in decimal", n, convert(n)); return 0; } // function definition int convert(long long n) { int dec = 0, i = 0, rem; while (n!=0) { rem = n % 10; n /= 10; dec += rem * pow(2, i); ++i; } return dec; }
输出
Enter a binary number: 1101 1101 in binary = 13 in decimal
在程序中,我们包含了头文件
math.h
,用于在程序中进行数学运算。
我们要求用户输入一个二进制数并将其传递给
convert()
函数以将其转换为十进制。
假设
n = 1101
。让我们看看
convert()
函数中的
while
循环是如何工作的。
n != 0 | rem = n % 10 | n/= 10 | i | dec += rem * pow(2, i) |
1101 != 0 | 1101 % 10 = 1 | 1101/10 = 110 | 0 | 0 + 1 * pow(2, 0) = 1 |
110 != 0 | 110% 10 = 0 | 110/10 = 11 | 1 | 1 + 0 * pow(2, 1) = 1 |
10 != 0 | 11% 10 = 1 | 11/10 = 1 | 2 | 1 + 1 * pow(2, 2) = 5 |
1 != 0 | 1% 10 = 1 | 1/10 = 0 | 3 | 5 + 1 * pow(2, 3) = 13 |
0 != 0 | - | - | - | 循环终止 |
所以,二进制的
1101
就是十进制的
13
。
现在,让我们看看如何将十进制数转换为二进制数。
示例 2: C 程序将十进制数转换为二进制数
// convert decimal to binary #include <stdio.h> #include <math.h> long long convert(int); int main() { int n, bin; printf("Enter a decimal number: "); scanf("%d", &n); bin = convert(n); printf("%d in decimal = %lld in binary", n, bin); return 0; } long long convert(int n) { long long bin = 0; int rem, i = 1; while (n!=0) { rem = n % 2; n /= 2; bin += rem * i; i *= 10; } return bin; }
输出
Enter a decimal number: 13 13 in decimal = 1101 in binary
假设
n = 13
。让我们看看
convert()
函数中的
while
循环是如何工作的。
n != 0 | rem = n % 2 | n/= 2 | i | bin += rem * i | i * = 10 |
13 != 0 | 13% 2 = 1 | 13/2 = 6 | 1 | 0 + 1 * 1 = 1 | 1 * 10 = 10 |
6 != 0 | 6 % 2 = 0 | 6/2 = 3 | 10 | 1 + 0 * 10 = 1 | 10 * 10 = 100 |
3 != 0 | 3 % 2 = 1 | 3/2 = 1 | 100 | 1 + 1 * 100 = 101 | 100 * 10 = 1000 |
1 != 0 | 1 % 2 = 1 | 1/2 = 0 | 1000 | 101 + 1 * 1000 = 1101 | 1000 * 10 = 10000 |
0 != 0 | - | - | - | 循环终止 |
因此,十进制的
13
是二进制的
1101
。