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

c语言十进制怎么转换成二进制

2025-05-09 20:09:30
智启星辰‌
智启星辰‌已认证

智启星辰‌为您分享以下优质知识

在C语言中,十进制转二进制主要有以下两种常见方法,均基于“除2取余,逆序排列”的原理:

一、使用位运算符(推荐)

通过右移运算符和与运算符逐位提取二进制位,最终将结果反转。

步骤:

1. 输入十进制数,初始化空字符串存储结果。

2. 使用循环右移数位,通过 `i & 1` 判断最低位是否为1,将结果存入字符串。

3. 循环结束后反转字符串,得到正确二进制表示。

示例代码:

```c

include

include

void decimalToBinary(int num) {

char binary = "";

while (num >

0) {

binary[32 - (num & 1)] = (num & 1) + '0';

num >

>

= 1;

}

binary = '0'; // 添加字符串结束符

for (int i = 0; binary[i] != '0'; i++) {

printf("%c", binary[i]);

}

}

int main() {

int num;

scanf("%d", &num);

decimalToBinary(num);

return 0;

}

```

二、使用数组存储余数(通用方法)

通过循环除以2记录余数,最后倒序输出。

步骤:

1. 输入十进制数,初始化数组存储余数。

2. 重复除以2操作,将余数存入数组对应位置。

3. 从高位到低位遍历数组输出结果。

示例代码:

```c

include

void decimalToBinary(int num) {

int a = {0};

int i = 0;

while (num >

0) {

a[i++] = num % 2;

num /= 2;

}

for (int j = i - 1; j >

= 0; j--) {

printf("%d", a[j]);

}

}

int main() {

int num;

scanf("%d", &num);

decimalToBinary(num);

return 0;

}

```

说明:

位数选择:示例中数组大小为33,可处理0-32767范围内的整数。若需处理更大数,可动态分配内存或使用位运算优化。

特殊情况:输入为0时,直接输出"0";负数处理需额外逻辑(本示例仅考虑非负整数)。

以上方法均可实现十进制到二进制的转换,选择时可根据具体需求(如效率、可读性)调整实现方式。