c++ - 使用位

标签 c++

程序:

typedef bitset<8> bits;
char original = 0xF0F0F0F0;
char Mask = 0xFFFF0000;
char newBits = 0x0000AAAA;

/*& operation with "0bit set 0" & "1bit give no change to original byte" */
cout<<"Original o: "<<bits(original)<<endl;
cout<<"NewBits: "<<bits(newBits)<<endl;
cout<<"Mask m: "<<bits(Mask)<<endl;
cout<<"o & m with Mask: "<<bits(original & Mask)<<endl;/*0 set original bit as 0 */

结果:

Original o: 11110000
NewBits: 10101010
Mask m: 00000000
o & m with Mask: 00000000
Result 10101010

我理解十六进制及其结果..但是....... o & m == 0000 0000 所以 bits(o & m | newBits) 结果应该是 0000 0000,而不是 1010 1010...

我错过了这个概念......

谁能帮帮我...

期待一个好的回应

谢谢

最佳答案

o & m = 0000 0000newBits = 1010 1010。因此,如果您对它们进行或运算(按位),您将得到 1010 1010 作为 0|0=0, 0|1=1, 1|0=1, 1|1=1 的结果

0000 0000 OR WITH
1010 1010
-----------------
1010 1010
-----------------

关于c++ - 使用位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645852/

相关文章:

c++ - 在字符串函数中抛出 'char const*'实例后调用终止方法

c++ - 没有 cpp 文件的 header ,包括排序

c++ - 复制初始化期间不会发生 std::string 的隐式构造

c++ - 为什么是0x7FFFFFFFull | (1 << 31) 在 C++ 中返回 0xFFFFFFFFFFFFFFFF?

c++ - 为什么const对象的成员变量不是const

c++ - 为什么不能使用 initializer_list 来初始化 unique_ptr 的 vector ?

c++ - 对数字数组进行子采样

c++ - 打印字节序列

c++ - 当 `virtual` 是一个相当大的开销时,是否有任何经验法则?

c++ - boost 日志 : File Rotation