这个问题已经在这里有一个答案:
问:提供的二进制掩码和位运算来完成以下任务:
到目前为止,我知道这是一个OR
操作,因为1是对的,但我不知道如何提供口罩。我必须把7,3,1
为二进制然后提供面膜?
如何设置或触发位的细节可以在这个问题上找到:How do you set, clear, and toggle a single bit?。您可以使用一个位位移设置/透明/切换单个位,例如
x |= (1UL << n); // Set bit n
或者你可以使用口罩,在那里你定义您所需的位。在这里,你首先需要创建一个面具,在这里你将所有你想要的位:
unsigned int myBinMask = 0b00100001; // Use bit 0 and 5
unsigned int myHexMask = 0x1C // Use bit 2, 3 and 4
unsigned int myShiftMask = (1UL << 1) | (1UL << 7); // Use bit 1 and 7
然后用它是这样的:
x ^= myBinMask; // Toggel bit 0 and 5