gpt4 book ai didi

c - 位值验证

转载 作者:太空狗 更新时间:2023-10-29 15:25:54 25 4
gpt4 key购买 nike

我想验证 uint8 的两位(例如位编号 3 和 5)值如果它们的值为 0,我想返回 1

uint8 a;
if ((a & !(1<<3)) && (a & !(1<<5)))
{
Instructions..
}

这段代码是否正确?

最佳答案

不,您的代码不会以您想要的方式工作。 ! 运算符只会产生 01 并且有关实际非零位的信息无论如何都会丢失。你可以使用这样的东西:

if(!(a & ((1 << 3) | (1 << 5))) {
/* ... */
}

在第一阶段,您使用 | 运算符创建掩码。该掩码仅在您感兴趣的位置具有非零位。然后通过 & 将该掩码与测试值组合。结果,仅当值在测试位置的位为零时,您才会得到 0。然后用 !0 反转为 1 以获得 true 条件。

关于c - 位值验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39363009/

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