在C语言中,将十进制数转换为二进制数主要有以下两种常见方法: 迭代法和 位运算法。以下是具体实现方式及代码示例:
一、迭代法(除2取余法)
通过不断除以2并记录余数,将余数倒序排列得到二进制数。
代码示例:
```c
include define MAX_BITS 32 void decimalToBinary(int n) { int binaryArr[MAX_BITS] = {0}; int i = 0; while (n > 0) { binaryArr[i] = n % 2; n /= 2; i++; } binaryArr[i] = 1; // 最后一位为1 for (int j = i - 1; j >= 0; j--) { printf("%d", binaryArr[j]); } } int main() { int num; printf("请输入一个十进制数: "); scanf("%d", &num); printf("二进制数为: "); decimalToBinary(num); return 0; } ``` 二、位运算法 利用位移和按位与操作符直接获取二进制位。 代码示例: ```c include void decimalToBinary(int n) { char binaryStr; int i = 0; while (n > 0) { binaryStr[i++] = (n & 1) ? '1' : '0'; // 按位与操作获取最低位 n >>= 1; // 右移一位 } binaryStr[i] = '0'; // 字符串结束符 printf("二进制数为: %sn", binaryStr); } int main() { int num; printf("请输入一个十进制数: "); scanf("%d", &num); decimalToBinary(num); return 0; } ``` 三、使用标准库函数(itoa) C标准库提供了`itoa`函数,可直接将整数转换为二进制字符串。 代码示例: ```c include include int main() { int num; printf("请输入一个十进制数: "); scanf("%d", &num); char *binaryStr = itoa(num, 2); printf("二进制数为: %sn", binaryStr); free(binaryStr); // 释放动态分配的内存 return 0; } ``` 四、注意事项 上述代码假设输入为32位整数,实际应用中可根据需求调整数组大小。 上述方法未处理负数,若需支持负数,需额外处理符号位。 位运算法通常比迭代法更高效,但代码可读性稍差;迭代法更直观,适合初学者。 以上方法均可实现十进制到二进制的转换,可根据具体需求选择合适的方式。位数限制:
负数处理:
效率与可读性: