我有:int8_t byteFlag;
我想先吃一点吗?我想我可能需要使用&
和>>
但不确定具体如何使用。有什么帮助吗?
最佳答案
int func(int8_t byteFlag, int whichBit)
{
if (whichBit > 0 && whichBit <= 8)
return (byteFlag & (1<<(whichBit-1)));
else
return 0;
}
现在
func(byteFlag, 1)
将从lsb返回第1位。可以将8
作为whichBit
传递以获取第8位(msb)。<<
是一种左移操作。它会将值1
移动到适当的位置,然后我们必须执行&
操作才能获取byteFlag
中该粒子位的值。对于
func(75, 4)
75 -> 0100 1011
1 -> 0000 0001
1 << (4-1) -> 0000 1000 //means 3 times shifting left
75 & (1 << (4 - 1))
将给我们1
。