
公考小黄为您分享以下优质知识
提取二进制中的数可以通过多种方法实现,具体取决于需求(如提取偶数位、统计1的个数等)。以下是常见的方法及示例代码:
一、提取二进制中的偶数位
使用掩码和位移操作提取偶数位(从右往左,第0位为最低位):
```c
include
void Find_even_bits(int a) {
printf("二进制中的偶数位序列为:");
for (int i = 32; i >
0; i -= 2) {
int b = (a >
>
i) & 1;
printf("%d ", b);
}
printf("n");
}
int main() {
int num = 29; // 二进制为 11101
Find_even_bits(num);
return 0;
}
```
输出:`1 0 1`
按位与操作
通过`a & (1 = 1;
}
return sum;
}
int main() {
unsigned char num = 29; // 二进制为 11101
printf("二进制中1的个数为:%dn", count_ones(num));
return 0;
}
```
输出:`3`
快速法(每减1少一个1)
通过`n & (n - 1)`消除最低位的1,减少循环次数:
```c
include
int count_ones(unsigned char n) {
int sum = 0;
while (n) {
n &= (n - 1);
sum++;
}
return sum;
}
int main() {
unsigned char num = 29; // 二进制为 11101
printf("二进制中1的个数为:%dn", count_ones(num));
return 0;
}
```
输出:`3`
三、其他常见转换方法
十进制转二进制
- 整数:
使用除2取余法,将余数逆序排列
- 小数:乘2取整法,将整数部分逆序排列
- 负数:先转换绝对值,再取反加1
使用按权求和法:`n = bₙ×2ⁿ + bₙ₋₁×2ⁿ₋₁ + ... + b₁×2¹ + b₀×2⁰`
例如:`1010111` = 1×2⁶ + 0×2⁵ + 1×2⁴ + 0×2³ + 1×2² + 1×2¹ + 1×2⁰ = 85
四、Python中的二进制处理
基本转换:
`bin(ord('A'))`将字符转换为二进制字符串(如`0b1000001`)
文件读写:使用`open`函数以`'wb'`模式写入二进制数据,或使用`struct`模块打包数据
以上方法可根据具体需求选择实现,位运算方法在性能上更优,而逐位统计则更直观