0

有没有办法获取十六进制数中的特定位进行验证?

例如:0x11,我想知道索引 2 是否为 1。如果是,我将执行操作。

我查看了位操作,但我没有找到任何关于特定位的信息。

4

2 回答 2

2

基于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
于 2012-03-26T15:35:14.627 回答
1

mmmmm....如果您复制数字,将该数字的值更改为零,然后使用 XOR 怎么办?

示例:我想知道第三个数字(从左到右)是一还是零:

 001011011
           XOR
 000011011  
 ---------
 001000000   // "TRUE"


 000011011
           XOR
 000011011  
 ---------
 000000000   // "FALSE"


 111111111
           XOR
 110111111  
 ---------
 001000000   // "TRUE"

ETC...

于 2012-03-26T15:38:34.550 回答