Pro*_*ere 5 c c++ bitwise-operators
如何设置十六进制数字?我目前有这个代码:
int row = 0x00000000;
row |= 0x3 << 8;
row |= 0x2 << 4;
row |= 0x1 << 0;
printf("Row: 0x%08x", row);
Run Code Online (Sandbox Code Playgroud)
只要"行"只是零,这就完美无缺.一旦我将其更改为以下内容:
int row = 0x33333333;
row |= 0x3 << 8;
row |= 0x2 << 4;
row |= 0x1 << 0;
printf("Row: 0x%08x", row);
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
行:0x33333333
Ale*_*dru 10
您应该先删除(使其为0)数字.
row &= ~(0xf << 4);
Run Code Online (Sandbox Code Playgroud)
~运算符反转数字中所有位的值.所以. 0x000000f0成为0xffffff0f.
您的代码应如下所示:
row &= ~(0xf << 8);
row |= 0x3 << 8;
row &= ~(0xf << 4);
row |= 0x2 << 4;
row &= ~(0xf << 0);
row |= 0x1 << 0;
Run Code Online (Sandbox Code Playgroud)