位操作:获取一个数字中的单个位

时间:2012-03-26 15:26:35

标签: bit operation

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

例如:0x11我想知道索引2是否为1.如果是,我会做一个动作。

我看一下位操作,但是我找不到任何关于某个位的信息。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

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


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


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

等...