【发布时间】:2021-09-13 00:20:22
【问题描述】:
我有一个数字 -3,我想将其用作 16 位整数并使用 | (或)具有 32 位整数的运算符。 所以理想情况下,我需要它,以便在二进制二进制补码中 -3 将是 0000 0000 0000 0000 1111 1111 1111 1101 我已经尝试过使用
int x = -3;
x = x << 16;
x = x >> 16;
我认为理想情况下这会将 0 放在 31-16 位(0 索引)中,但它似乎不起作用。任何帮助实现这一点将不胜感激。
【问题讨论】:
-
是否必须使用shift?也可以使用位掩码:
x = x & 0x0000ffff; -
如果你想要0000 0000 0000 0000 1111 1111 1111 1101,你为什么不直接使用
0xFFFD?
标签: c bit-shift twos-complement