移位并确保最后两位在C中为10

问题描述 投票:0回答:1

我如何移位,所以我只需要比较一个数字的前两位?假设我想比较10101011010的最后两位,并确保它是10

我该怎么做?

c bit-shift
1个回答
0
投票

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

因此在您的示例中:

val = b10101011010

并且您要确保最后2位是10

y = b10 = 0x02 = 2

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

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

或者您可以使用位移:

mask = (0x01 << 0) | (0x01 << 1)

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

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

->现在我们有兴趣的地方

并且我们将res与您希望它们成为的值进行比较:

if (res == y)
// -> good
else
// -> bad
© www.soinside.com 2019 - 2024. All rights reserved.