常数转二进制的方法主要分为整数和小数两类,具体如下:
一、整数转二进制
除2取余法 将整数不断除以2,记录每次的余数,然后将余数倒序排列即可。例如:
- 123 ÷ 2 = 61 余 1
- 61 ÷ 2 = 30 余 1
- 30 ÷ 2 = 15 余 0
- 15 ÷ 2 = 7 余 1
- 7 ÷ 2 = 3 余 1
- 3 ÷ 2 = 1 余 1
- 1 ÷ 2 = 0 余 1
倒序排列后得到二进制数 1111011
。
位运算法
在C语言中,可以使用位运算符 `>>`(右移)和 `&`(按位与)实现转换。例如:
```c
int n = 123;
char binary;
for(int i = 31; i >= 0; i--) {
binary[i] = (n >> i) & 1;
}
binary = '0'; // 添加字符串结束符
printf("%sn", binary); // 输出二进制字符串
```
二、小数转二进制
乘2取整法
将小数部分不断乘以2,记录每次的整数部分,直到小数部分为0或达到所需精度。例如:
- 0.625 × 2 = 1.25 → 取整数1
- 0.25 × 2 = 0.5 → 取整数0
- 0.5 × 2 = 1.0 → 取整数1
结果为 0.101。
C语言实现
可以通过循环和累加实现,例如:
```c
double decimal = 123.45;
char binary;
int index = 0;
while(decimal > 0) {
if(decimal >= 1) {
binary[index++] = (decimal >= 2) ? '1' : '0';
decimal -= (decimal >= 2) ? 1 : 0.5;
} else {
binary[index++] = (decimal >= 0.5) ? '1' : '0';
decimal -= (decimal >= 0.5) ? 0.5 : 0.25;
}
}
while(index > 0) binary[index--] = '0'; // 倒序
printf("%sn", binary); // 输出二进制字符串
```
三、注意事项
负数处理: 整数转二进制时,需考虑补码表示(如C语言中 `int` 类型为32位)。 精度控制