【发布时间】:2021-01-23 23:01:06
【问题描述】:
当数字的任何位等于 0 时,我需要打印出值 1,并且目前我正在努力解决如何执行此操作。我不应该使用任何相等或不等式测试,并且基本上仅限于位级和逻辑运算。有什么想法吗?
int b = 15;
printf("prints 1 when any bit of a number equals 0: %d\n", //PRINT GOES HERE);
b = 10;
printf("prints 1 when any bit of a number equals 0: %d\n", //PRINT GOES HERE);
【问题讨论】:
-
@ScottHunter 我目前已经尝试过诸如“!b”,“!!(b ^ 0xF)”,“!(!b)”之类的东西,不幸的是没有成功获得结果我需要
-
你的任务有没有明确告诉你输出的一定是1?或者它必须是非零的?
-
您的任务是否明确告诉您输入的类型是
int而不是unsigned int? -
@AndreasWenzel 输入是 int 类型,它说必须输出 1
-
请注意,
!和!!是(不)等式测试。我怀疑你被要求通过移位和按位运算符算术合并位并显示结果。
标签: c binary bitwise-operators