问题:提供二进制掩码和按位操作以完成以下任务:
到目前为止,我知道这是一个OR
操作,因为1处于打开状态,但是我不知道如何提供遮罩。我必须将7,3,1
转换为二进制然后提供掩码吗?
答案 0 :(得分:0)
有关如何设置或切换位的详细信息,请参见以下问题: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