首页  > 教育解读  > c语言二进制转换怎么做

c语言二进制转换怎么做

2025-05-03 14:40:07
枫叶飘零
枫叶飘零已认证

枫叶飘零为您分享以下优质知识

在C语言中,二进制转换可以通过多种方法实现,具体取决于转换方向(如二进制转十进制、十进制转二进制)和输入输出形式(如整数或字符串)。以下是常见的转换方法及示例代码:

一、二进制转十进制

整数二进制转十进制

使用按权相加法,从右往左遍历二进制位,每位数值乘以2的幂次后求和。

```c

// 通过循环实现

int binaryToDecimal(int n) {

int decimal = 0;

for (int i = 0; i < 32; i++) { // 假设32位整数

decimal += (n & 1) * (1 >

= 1;

}

return decimal;

}

// 递归实现

int fun(int n) {

if (n == 0) return 0;

return fun(n / 2) + (n & 1);

}

```

二进制字符串转十进制

遍历字符串,将每位字符转换为数字后按权相加。

```c

int binaryToDecimal(char *binary) {

int decimal = 0;

for (int i = 0; i < strlen(binary); i++) {

int bit = binary[i] - '0';

decimal = decimal * 2 + bit;

}

return decimal;

}

```

二、十进制转二进制

整数十进制转二进制

使用除2取余法,将余数倒序排列。

```c

void decimalToBinary(int n) {

if (n == 0) return;

int binaryArr = {0};

for (int i = 0; i < 32; i++) {

binaryArr[i] = n % 2;

n /= 2;

}

for (int i = 31; i >

= 0; i--) {

printf("%d", binaryArr[i]);

}

}

```

浮点数十进制转二进制

可使用`printf`的格式化输出功能直接显示。

三、其他进制转换

进制通用转换

- 八进制转十进制:

使用`atoi`函数直接转换(如`atoi("73627")`)。

- 十六进制转十进制:使用`atoi`函数(如`atoi("1A3F")`)。

综合示例

下面是一个综合程序,支持二进制与十进制之间的相互转换:

```c

include

include

include

// 二进制转十进制(整数)

int binaryToDecimal(int n) {

int decimal = 0;

for (int i = 0; i < 32; i++) {

decimal += (n & 1) * (1 >

= 1;

}

return decimal;

}

// 十进制转二进制

void decimalToBinary(int n) {

if (n == 0) return;

int binaryArr = {0};

for (int i = 0; i < 32; i++) {

binaryArr[i] = n % 2;

n /= 2;

}

for (int i = 31; i >

= 0; i--) {

printf("%d", binaryArr[i]);

}

}

int main() {

char binary;

int decimal;

printf("输入一个二进制数: ");

scanf("%s", binary);

decimal = atoi(binary);

printf("对应的十进制数为: %dn", decimal);

printf("输入一个十进制数: ");

scanf("%d", &decimal);

printf("对应的二进制数为: ");

decimalToBinary(decimal);

printf("n");

return 0;

}

```

注意事项

以上示例假设输入为32位整数,实际应用中可根据需求调整位数。

对于浮点数或长整型,建议使用`long long`类型并修改转换逻辑。

进制转换时需