按位操作混淆

时间:2012-10-01 22:04:19

标签: c hex logic operations

首先,让我直接说明这是我周三准备的期中考试。 我正在参加C编程课程,我们几乎没有触及Bitwise操作,但我们正在对它们进行测试。

例如,我们应该知道类似A,B,C和D的内容,如下所示:

unsigned int A, B, C, D;
A = 0xfedc & 0x300c;
B = 0xba98 | 0x1236;
C = 0x7654 ^ 0xfa00;
D = ~0xffff3210;

如果可能,您能否为我提供一个体面的教程/指南来理解这些概念?解释也很棒,但我不愿意给出实际的答案解释。

提前感谢您提供的帮助。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

第一个问题是:

  • 您认为&为按位AND,|为按位OR,^为按位XOR,~为按位NOT?

如果没有,你有一两个问题需要达到认识它们的程度。

然后你需要知道每个操作意味着什么...

  • 对于给定的位位置,如果两个位均为1,则b1 & b2将为1;否则,它将是0
  • 对于给定的位位置,如果两个位均为0,则b1 | b2将为0;否则,它将是1
  • 对于给定的位位置,如果两个位相同(0或两个1),则b1 ^ b2将为0;否则将是1
  • 对于给定的位位置,如果该位为0,则~b1将为1;否则,它将是0

您还需要认识到十六进制表示与数字中的位模式密切相关。

  • 0x0⟶0000 2
  • 0x1⟶0001 2
  • ...
  • 0xE⟶1110 2
  • 0xF⟶1111 2

结合这些,您可以推导出所示问题的答案,将按位运算符应用于操作数的每一位。