mrQ*_*RTY 1 c bitwise-operators
我正在学习C,我的部分练习是处理按位运算符.我正在尝试创建一个函数,打印出char输入的2的补码.
这是我到目前为止:
#include <stdio.h>
#include <stdlib.h>
void find_binary(char ch) {
long bit_index = 0;
unsigned long sz = sizeof(ch)*8-1;
for (bit_index = 0; bit_index <= sz; ++bit_index) {
int bit = (1 << bit_index) & ch;
printf("%d", bit);
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
这是输出:0008032640当我输入时'h'.
为什么这个打印整数不是0和1?
表达方式
int bit = (1 << bit_index) & ch;
Run Code Online (Sandbox Code Playgroud)
使用相应的位设置产生零或2的幂.要使其进入0..1范围,可以ch向右移动并使用掩码1,或者转换表达式,如下所示:
int bit = ((1 << bit_index) & ch) != 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |