基本上,如果我在 D1 中有一个数字,并且希望它始终是偶数,我将如何确保它永远不会是奇数?
我知道这与 AND 指令有关。但是当我尝试这样做时,它总是减去 1。所以它会将奇数变为偶数,偶数变为奇数。
我基本上怎么做 if n is odd, sub 1
最佳答案
and
使用 -2
您的号码。
在 2 的补码表示中,-2 是一个数字,除最低位 (11111...110) 外,所有位都设置为 1,因此,用作掩码时,它总是只删除数字的低位。这迫使它是偶数(即使对于负数它也能正常工作)。
至于标题中的“反之亦然”:做相反的事情(=强制每个偶数到下一个奇数),只需 or
和 1
。这将低位设置为 1,从而获得所需的效果。
关于assembly - 如何在摩托罗拉 68000 组件中将奇数变为偶数,反之亦然?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50147926/