在 C 中进行位移并确保最后两位数字为 10

Bitshifting and making sure the last two digits are 10 in C

如何进行位移以便我只需要比较数字中的前两位数字?假设我想比较 10101011010 最后两位并确保它是 10.

我该怎么做?

如果您想检查某些位是否设置为整数,您可以使用二进制 and 运算符 (&) 和掩码。在掩码中设置要检查的位,然后使用此掩码分隔要检查的位。

所以在你的例子中:

val = b10101011010

并且您想确保最后 2 位是 10:

y = b10 = 0x02 = 2

比起你制作掩码,它会选择最后 2 位:

mask = b00000000011 = 0x03 = 3(我会使用十六进制表示法使其更清楚)

或者您可以使用移位:

mask = (0x01 << 0) | (0x01 << 1)(设置第 0 位和第 1 位并or将它们组合在一起)

现在我们使用二进制 and 运算符:

val  = b10101011010
mask = b00000000011
& -----------------
res  = b00000000010

--> 现在我们有了我们感兴趣的部分

然后我们将 res 与您希望的值进行比较:

if (res == y)
// -> good
else
// -> bad