gpt4 book ai didi

c - 实现 if - else if 使用按位运算符

转载 作者:行者123 更新时间:2023-12-01 13:57:58 25 4
gpt4 key购买 nike

假设 test 的值是 10 .在这里,我可以使用按位运算符实现以下 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要么是 01 .
有什么建议可以这样做吗?

最佳答案

我假设你的意思是你原来的 if 语句。

output = (((test << 31) >> 31) & a) | (((!test << 31) >> 31) & b);

不在测试前面,所以当测试为 1 时这不是 a+b,当测试为 0 时这不是 a+b,我替换了 +|因为除了你想要的那个之外,每个 case 都应该是 0。

要执行级联 if else if else 语句,您可以重写表达式,以便
它们依赖于之前的测试。
if (test1)
output = a
if (!test1 & test2)
output = b
if (!test1 & !test2 & test3)
output = c
if (!test1 & !test2 & !test3)
output = d

这导致了所有 if else ifs 的表达式。
output = (((test1 << 31) >> 31) & a)
| ((((!test1 & test2) << 31) >> 31) & b)
| ((((!test1 & !test2 & test3) << 31) >> 31) & c)
| ((((!test1 & !test2 & !test3) << 31) >> 31) & d)

关于c - 实现 if - else if 使用按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com