跳到主要内容

C 编程:二进制与十进制互转

要理解这个示例,你应该了解以下 C 语言编程 相关主题:

示例 1:C 语言程序将二进制数转换为十进制数

// 将二进制转换为十进制

#include <stdio.h>
#include <math.h>

// 函数原型
int convert(long long);

int main() {

long long n;

printf("请输入一个二进制数:");
scanf("%lld", &n);

printf("%lld 的二进制 = %d 的十进制", n, convert(n));

return 0;
}

// 函数定义
int convert(long long n) {

int dec = 0, i = 0, rem;

while (n != 0) {

// 获取 n 除以 10 的余数
rem = n % 10;

// n 除以 10
n /= 10;

// 将 rem 乘以 (2 ^ i)
// 将乘积加到 dec 上
dec += rem * pow(2, i);

// i 加一
++i;
}

return dec;
}

输出

请输入一个二进制数:1101
1101 的二进制 = 13 的十进制

在程序中,我们引入了头文件 math.h 来执行程序中的数学运算。

我们要求用户输入一个二进制数,并将其传递给 convert() 函数以将其转换为十进制数。

假设 n = 1101。让我们看看 convert() 函数中的 while 循环是如何工作的。

n != 0rem = n % 10n /= 10idec += rem * pow(2, i)
1101 != 01101 % 10 = 11101 / 10 = 11000 + 1 * pow (2, 0) = 1
110 != 0110 % 10 = 0110 / 10 = 1111 + 0 * pow (2, 1) = 1
11 != 011 % 10 = 111 /10 = 121 + 1 * pow (2, 2) = 5
1 != 01 % 10 = 11 / 10 = 035 + 1 * pow (2, 3) = 13
0 != 0---循环终止

因此,二进制的 1101 在十进制中是 13。现在,让我们来看看如何将十进制数转换成二进制数。

示例 2:C 语言程序将十进制数转换为二进制数

// 将十进制转换为二进制

#include <stdio.h>
#include <math.h>

// 函数原型
long long convert(int);

int main() {

int n;
long long bin;

printf("请输入一个十进制数:");
scanf("%d", &n);

// 使用 convert() 函数转换为二进制
bin = convert(n);

printf("%d 的十进制 = %lld 的二进制", n, bin);

return 0;
}

// 函数定义:将十进制转换为二进制
long long convert(int n) {

// 用于存储结果的变量
long long bin = 0;

int rem, i = 1;

// 循环将十进制转换为二进制
while (n != 0) {

// 获取 n 除以 2 的余数
rem = n % 2;

// n 除以 2
n /= 2;

// 将余数乘以 i
// 将乘积加到 bin
bin += rem * i;

// 将 i 乘以 10
i *= 10;
}

return bin;
}

输出

请输入一个十进制数:13
13 的十进制 = 1101 的二进制

假设 n = 13。让我们看看 convert() 函数中的 while 循环是如何工作的。

n != 0rem = n % 2n /= 2ibin += rem * ii * = 10
13 != 013 % 2 = 113 / 2 = 610 + 1 * 1 = 11 * 10 = 10
6 != 06 % 2 = 06 / 2 = 3101 + 0 * 10 = 110 * 10 = 100
3 != 03 % 2 = 13 / 2 = 11001 + 1 * 100 = 101100 * 10 = 1000
1 != 01 % 2 = 11 / 2 = 01000101 + 1 * 1000 = 11011000 * 10 = 10000
0 != 0---循环终止

因此,十进制的 13 在二进制中是 1101