我正在考虑一种NOT
为 IJVM 实现操作/指令的方法,以便我可以编写一个乘法 JAS 方法,但是我在尝试实现一个否定方法时遇到了麻烦。
任何人都可以帮忙解决这个问题吗?
我正在考虑一种NOT
为 IJVM 实现操作/指令的方法,以便我可以编写一个乘法 JAS 方法,但是我在尝试实现一个否定方法时遇到了麻烦。
任何人都可以帮忙解决这个问题吗?
基本上有多种方法可以计算一个值的补码,即NOT
:
not_x = NAND(x, x) = NAND(x, ~0);
not_x = NOR(x, x) = NOR(x, 0);
not_x = -x - 1; // because in 2's complement -x = ~x + 1
not_x = 0xFFFFFFFF - x; // assuming 32-bit computer
not_x = x XOR 0xFFFFFFFF; // or x XOR ~0
...
我不了解 IJVM,但正如此处所述,它仅支持 4 种算术运算IADD
、、ISUB
和。您可以使用来实现这一点IAND
IOR
ISUB
现在为了更多的乐趣,我们可以not_x = x XOR ~0 = (x OR ~0) - (x AND ~0)
从a XOR b = (a OR b) - (a AND b)
. 另一种解决方案是使用查找表