1

首先,让我郑重声明,这是为我周三的期中考试做准备。我正在学习 C 编程课程,我们几乎没有接触过按位运算,但我们正在接受测试。

例如,我们应该知道 A、B、C 和 D 的初始化内容,如下所示:

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

如果可能的话,你能为我提供一个体面的教程/指南来理解这些概念吗?一个解释也会很棒,但我不希望得到一个实际的答案解释。

提前感谢您提供的任何帮助。

4

2 回答 2

2

我希望这有助于 http://www.cprogramming.com/tutorial/bitwise_operators.html

于 2012-10-01T22:06:54.663 回答
2

第一个问题是:

  • 你能识别&出按位与、|按位或、^按位异或和~按位非吗?

如果没有,那么您有一两个问题,需要达到将它们全部识别出来的地步。

然后你需要知道每个操作是什么意思...

  • 对于给定的位位置,如果两个位都是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

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

于 2012-10-01T22:12:50.477 回答