假设我有四个 32 位数字,定义为使它们的位不重叠,即
unsigned long int num0 = 0xFF000000;
unsigned long int num1 = 0x00FF0000;
unsigned long int num2 = 0x0000FF00;
unsigned long int num3 = 0x000000FF;
在每个数字中,FF
s 的位置可以有任何内容。
我说的对吗?addition 和 bitwise or 对于这种类型的数字总是会产生相同的输出?
谢谢!
最佳答案
只要对两个数num1和num2适用num1 & num2 == 0
,则如下:
num1 + num2 == num1 | num2
原因是,加法基本上是按位异或,加进位。但只要没有进位位(num1 & num2 == 0
),那么加法归结为按位异或,即(再次因为 num1 & num2 == 0
) 在这种情况下逻辑上等价于按位或
关于c++ - 在这种情况下, 'addition' 和 'bitwise or' 是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334832/