c – 在这种情况下,“加法”和“按位还是”相同?

说我有四个32位数字,定义为它们的位不重叠,即

unsigned long int num0 = 0xFF000000;
unsigned long int num1 = 0x00FF0000;
unsigned long int num2 = 0x0000FF00;
unsigned long int num3 = 0x000000FF;

在每个数字中,可以在FF的位置有任何东西.

我正确的说,加法和按位还是总是产生相同的输出这样的数字?

谢谢!

只要两个数字num1和num2应用num1& num2 == 0,然后如下:

num1 num2 == num1 | NUM2

原因是,该加法基本上是一个按位XOR,加进位.但是只要没有进位位(num1& num2 == 0),那么加法归结为按位XOR,这是(再次因为num1& num2 == 0)在这种情况下逻辑上等同于按位OR

相关文章
相关标签/搜索