Assembly 汇编代码:添加和异或逻辑
我正在看教科书中的一个拼图,我不确定我是否正确地解释了组装说明。按照我的理解,它告诉我找到两个和为6005的数字,和为0的xorAssembly 汇编代码:添加和异或逻辑,assembly,Assembly,我正在看教科书中的一个拼图,我不确定我是否正确地解释了组装说明。按照我的理解,它告诉我找到两个和为6005的数字,和为0的xor 这不意味着数字是相等的吗?但既然他们的总数是6005,怎么可能呢?是否可能找到一对这样的数字,或者我是否错误地解释了汇编代码?让我知道你的想法!谢谢 这些说法相互矛盾: 让我们假设它们的xor为0,其和为6005;这意味着两个数字相等 这两个数字不是成对的就是成对的 假设对:2k+2k=4k=2(2k)=2k=一个对数 假设2k+1+2k+1=4k+2=2(2k+1)
这不意味着数字是相等的吗?但既然他们的总数是6005,怎么可能呢?是否可能找到一对这样的数字,或者我是否错误地解释了汇编代码?让我知道你的想法!谢谢 这些说法相互矛盾: 让我们假设它们的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=数量
所以这是不可能的 这取决于拼图的代码和代码所针对的特定CPU。例如,对于x86:
mov eax, 3002
stc
adc eax, eax ; the result is 6005
xor eax, eax ; the result zero
“两个和为6005的数字”通常表示
a+b=6005
,而不是a+b+1=6005
。加上xor(a,b)=0意味着不存在这样的一对数字。是的,当然,但我们不知道谜题的实际情况。我只是在猜测。也许这本教科书的问题是关于携带旗帜。