gpt4 book ai didi

c - 使用位运算符执行此操作

转载 作者:行者123 更新时间:2023-11-30 18:14:13 24 4
gpt4 key购买 nike

如果 0 到 255 之间的整数等于 0 或等于 224,我想要 eval。

我有这个代码:

if (!num || 224 == num)

有没有办法使用一些按位运算来做到这一点?

我尝试过这个,我有有效的:0, 31, 32, 63 ,64, 95, 96, 127, 128, 159, 160, 191, 192, 223, 224, 255。显然是不好的,因为我只需要0 和 224。

!((num+1) & 30)

最佳答案

是的,输入的范围使其变得稍微容易一些。

您可以使用(x - 1) >> 31来检测x是否为0(技术上不可移植,但通常可以工作)

它依赖于 x 永远不会小于 0,并且不可移植地依赖于有符号 int 上的右移是算术移位(通常是这种情况)。

同样,您可以使用 ((x ^ 224) - 1) >> 31 来检测 224。

就像这样把它们放在一起:

int mask = ((x - 1) >> 31) | (((x ^ 224) - 1) >> 31);

就这样。

关于c - 使用位运算符执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394457/

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