汇编代码:Add和xor逻辑

时间:2013-02-17 07:12:36

标签: assembly

我正在看教科书中的一个谜题,我不确定我是否正确地解释了装配说明。我理解它的方式,告诉我找到两个总和为6005且xor为0的数字。

这不是说这些数字彼此相等吗?但他们怎么可能,因为他们的总和是6005?是否有可能找到一对这样的数字,或者我是否错误地解释了汇编代码?让我知道你的想法!谢谢。

2 个答案:

答案 0 :(得分:2)

这些陈述是矛盾的:

让我们假设它们xor为0,它们的和为6005;这意味着两个数字相等;

这两个数字都是成对或受损

假设对:2k + 2k = 4k = 2(2K)= 2k =一对数

假设损害2k + 1 + 2k + 1 = 4k + 2 = 2(2k + 1)= 2k =一对数

6005 = 2(3002)+ 1 = 2k + 1 =不公平数。

所以这是不可能的。

答案 1 :(得分:0)

这取决于拼图的代码和代码所针对的特定CPU。例如,对于x86:

mov   eax, 3002
stc
adc   eax, eax   ; the result is 6005

xor   eax, eax   ; the result zero