在 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
如何进行位移以便我只需要比较数字中的前两位数字?假设我想比较 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