如何解决这种逻辑运算? (家庭作业)

时间:2011-01-22 11:50:23

标签: assembly

老师给了我们这个问题,我无法回答,希望能得到一些帮助。

执行以下逻辑操作:
1- AB5D和CD5F
2- DD1D XOR B159

我想知道我应该采取的步骤,以找到正确的答案。

3 个答案:

答案 0 :(得分:3)

成员是十六进制的(AB5D,CD5F,...),所以如果你以前用二进制转换它们会更容易。您可以使用此表:

0 = 0000  4 = 0100  8 = 1000  C = 1100
1 = 0001  5 = 0101  9 = 1001  D = 1101
2 = 0010  6 = 0110  A = 1010  E = 1110
3 = 0011  7 = 0111  B = 1011  F = 1111

所以,AB5D是1010101101011101

然后应用按位操作。这意味着,例如A XOR 3的结果是:

A XOR 3 =
1010 XOR 0011 =
1001 =
9 (see conversion table)

答案 1 :(得分:2)

将单个十六进制字符转换为二进制,将它们放在一起,对于每一列,如果两者都是1,则结果为1;在所有其他情况下,结果将为零。将其写在另外两个二进制字符串下面。然后,当您对所有数字执行此操作时,将其转换回十六进制。

示例:

A = 1010
C = 1100
    ----
    1000 = 8

你的第一个数字是ANDing AB5D和CD5F。继续这样做,你会得到它。

XOR运算给出一个1,其中一个或另一个数字是1,但不是两个。

同样值得你清理所有bitwise operations;他们都可以用同样的方式完成。

答案 2 :(得分:0)

0xAB5D AND 0xCD5F = 0x895D

0xDD1D XOR 0xB159 = 06C44

在Windows中使用'calc'或在GNOME linux中使用'gnome-calculator'或者只使用Pyrhon / Ruby吧。

UPD:如果您想在纸上执行此操作,请按照以下几个简单步骤操作:

  • convert your numbers to binary(例如0xAB5D == 1010101101011101; 0xCD5F == 1100110101011111)
  • 对这两个二进制文件执行bitwise operation(1010101101011101 AND 1100110101011111 = 1000100101011101)
  • 将结果转换为十六进制或十进制