有没有办法获得十六进制数中的特定位来验证?
例如:0x11我想知道索引2是否为1.如果是,我会做一个动作。
我看一下位操作,但是我找不到任何关于某个位的信息。
答案 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"
等...