c++ - 在这种情况下, 'addition' 和 'bitwise or' 是否相同?

标签 c++ c math bitwise-operators addition

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

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

在每个数字中,FFs 的位置可以有任何内容。

我说的对吗?additionbitwise 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/

相关文章:

c - 将 0 表示为 gnss 坐标的负数

c++ - 谁决定一个字节的大小,是编译器还是CPU?

c - 在线程之间划分工作? (并行线程)

java - 指数拟合与 apache 公共(public)数学

javascript - Math.floor(Math.random() * 255) 不会产生不均匀的概率吗?

c++ - 使用英特尔 I/OAT 时,在虚拟寻址中映射设备内存到哪里?

c++ - 试图在映射 C++ 中存储指向抽象类的指针

c++ - 使用计数器变量测量运行时间

c++ - 使用 GSL 库制作样条线并使用它们进行集成

java - 分布式 "dumping"/"compressing"数据样本