整数二进制转换主要有以下两种方法,适用于不同场景:
一、除2取余法(逆序排列法)
操作步骤 - 将十进制整数不断除以2,记录每次的余数(0或1);
- 当商为0时停止,将余数从低位到高位依次排列,得到二进制表示。
示例
将十进制数11转换为二进制:
- 11 ÷ 2 = 5 余1
- 5 ÷ 2 = 2 余1
- 2 ÷ 2 = 1 余0
- 1 ÷ 2 = 0 余1
- 最终结果为1011。
二、位运算法(逐位检查)
核心思想
利用位操作直接统计二进制中1的个数,效率较高,适用于编程场景。
实现方式
- 使用`n & 1`判断最低位是否为1,每检测一次将`n`右移一位(相当于除以2);
- 循环直到`n`为0,统计1的个数。
三、C语言实现示例
以下是C语言中两种方法的代码示例:
除2取余法
```c
include int decimalToBinary(int n) { if (n == 0) return "0"; char binary = ""; while (n > 0) { binary[32 - __builtin_popcount(n)] = n % 2 + '0'; n >>= 1; } return binary; } int main() { int num = 11; printf("%sn", decimalToBinary(num)); // 输出1011 return 0; } ``` 位运算法(统计1的个数) ```c include int countBits(int n) { int count = 0; while (n) { count += n & 1; n >>= 1; } return count; } int main() { int num = 11; printf("%dn", countBits(num)); // 输出3 return 0; } ``` 总结 手动转换: 推荐使用除2取余法,步骤直观且适用于教学场景; 编程实现