能否仅用位运算实现逻辑判断a==true && b==false?
仅用位运算实现
a == true && b == false的方案 当然可以实现,直接用按位与和按位取反的组合即可:a & (~b)
验证所有输入情况
假设用1代表true,0代表false,逐一验证:
- 当
a=1、b=0:1 & (~0) = 1 & 1 = 1(符合需求) - 当
a=1、b=1:1 & (~1) = 1 & 0 = 0(正确排除) - 当
a=0、b=0:0 & (~0) = 0 & 1 = 0(正确排除) - 当
a=0、b=1:0 & (~1) = 0 & 0 = 0(正确排除)
为什么异或(^)不行?
异或的逻辑是「两个比特值不同则为真」,它会同时触发1^0和0^1两种场景的真结果,而你的需求只需要a真且b假这唯一一种真场景,所以异或无法满足。
内容的提问来源于stack exchange,提问作者aro
相关产品推荐
相关产品推荐

