【发布时间】:2013-05-28 13:17:43
【问题描述】:
假设test 的值为1 或0。在这里,我可以使用如下的位运算符来实现以下 if 语句。
if (test)
output = a;
else
output = b;
使用位运算符
output = (((test << 31) >> 31) & a) | (((test << 31) >> 31) & b);
现在我想使用位运算符实现以下 if 语句。
if (test1)
output = a;
else if (test2)
output = b;
else if (test3)
output = c;
else
output = d;
test1、test2、test3 的值是 0 或 1。
有什么建议吗?
【问题讨论】:
-
可以不使用
!吗? -
+不是位运算符。 -
另外,这里没有循环。
-
test的类型是什么? -
@noufal:谢谢,但您还没有解决上面的第一条评论。这个要求的动机是什么?是回避分支、智力锻炼、家庭作业还是其他什么?
标签: c loops if-statement logic bit-manipulation