问题描述
int main() {
unsigned int nr,mask;
printf("nr = "); //for eg. if i use number 11111111 or 00111111 it prints 0.
scanf("%hu",&nr);
if ((nr & 0b00001000) == 0)
printf("0\n\n");
else
printf("1\n\n");
mask = 0b00001000;
if (nr & mask)
printf("1\n");
else
printf("0\n");
printf("%x",nr);
return 0;
}
我可以使用00001000 & nr(10101010)
这样的掩码,将“ 1”放置在复位位置,以便第4位保持静止,但是再次无效(我不知道为什么)。但是我不知道如何在以后打印数字。
解决方法
scanf()
没有读取二进制字符串的选项,因此您将必须读取为字符串并自己进行转换。
例如(省略错误检查):
char nr_str[128];
scanf("%127s",nr_str);
nr = 0;
for (int i = 0; nr_str[i] != '\0'; i++) {
nr = (nr << 1) | (nr_str[i] - '0');
}