我有:
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

09-28 06:49