有没有办法获取十六进制数中的特定位进行验证?
例如:0x11,我想知道索引 2 是否为 1。如果是,我将执行操作。
我查看了位操作,但我没有找到任何关于特定位的信息。
基于0x11
,我猜测您正在使用 C 或类似的东西来使用相同的按位运算符。
在这种情况下,您首先构建一个包含您关心的位的位掩码。要获得设置了该位的掩码,您通常采用1
(仅设置了其最低有效位)并将其向左移动适当数量的位置以将该单个位放在您关心的位置。
然后and
在掩码和输入之间按位执行。
最后,检查结果是否and
为零。
int position = 2;
int bitmask = 1 << position;
if (input & mask)
// that bit was a 1
else
// that bit was a 0
mmmmm....如果您复制数字,将该数字的值更改为零,然后使用 XOR 怎么办?
示例:我想知道第三个数字(从左到右)是一还是零:
001011011
XOR
000011011
---------
001000000 // "TRUE"
000011011
XOR
000011011
---------
000000000 // "FALSE"
111111111
XOR
110111111
---------
001000000 // "TRUE"
ETC...