如何解决为什么我的位掩码程序不起作用?我如何重置/设置一点然后打印号码
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');
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。