我正在学习 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");
}
这是当我输入 'h'
时的输出:0008032640
。
为什么要打印 0 和 1 以外的整数?
最佳答案
表达式
int bit = (1 << bit_index) & ch;
用相应的位集产生零或二的幂。要将其置于 0..1 范围内,请将 ch
右移并使用 1
进行屏蔽,或者按如下方式转换您的表达式:
int bit = ((1 << bit_index) & ch) != 0;
关于C - 打印给定字符的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754190/