繁体   English   中英

如何使用按位运算符实现逻辑运算符

[英]How to implement logical operators using bitwise operators

逻辑运算符如何|| &&仅使用按位运算符&^|来实现 , ~ , >> , <<逻辑运算符! , 和+ ? 我在堆栈溢出和谷歌上四处寻找某人以前的答案或一些汇编实现,但还没有找到任何东西。 我想如果没有人有任何解决方案,我可能会转向 HDL 并看看它合成了什么。

不可能,尽管建议a && b可以写成!!a & !!ba || b是很有诱惑力的。 a || b作为!!a | !!b !!a | !!b

这是因为|| &&有一个属性,如果从第一个参数的结果中知道表达式的结果,则不会发生对第二个参数的评估。 例如为true || A true || A , A未评估,对于false && BB未评估。 因此,如果您尝试复制|| &&与位运算符,那么你可以很好地在你的程序中引入副作用。

还有|| &&排序点,而按位运算符不是。 因此,例如定义了a++ && a++ ,但未定义a++ & a++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM