如何做到这一点位运算的问题[复制]

问题描述 投票:0回答:1

这个问题已经在这里有一个答案:

问:提供的二进制掩码和位运算来完成以下任务:

  1. 打开位的8位二进制数的7,3,1(1上,0是关闭的)。
  2. 肘节位的8位二进制数的6,5,4

到目前为止,我知道这是一个OR操作,因为1是对的,但我不知道如何提供口罩。我必须把7,3,1为二进制然后提供面膜?

binary bit-manipulation masking operation
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.