Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编代码:添加和异或逻辑_Assembly - Fatal编程技术网

Assembly 汇编代码:添加和异或逻辑

Assembly 汇编代码:添加和异或逻辑,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的数字,和为0的xor


这不意味着数字是相等的吗?但既然他们的总数是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意味着不存在这样的一对数字。是的,当然,但我们不知道谜题的实际情况。我只是在猜测。也许这本教科书的问题是关于携带旗帜。