1

我正在考虑一种NOT为 IJVM 实现操作/指令的方法,以便我可以编写一个乘法 JAS 方法,但是我在尝试实现一个否定方法时遇到了麻烦。

任何人都可以帮忙解决这个问题吗?

4

1 回答 1

1

基本上有多种方法可以计算一个值的补码,即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和。您可以使用来实现这一点IANDIORISUB

现在为了更多的乐趣,我们可以not_x = x XOR ~0 = (x OR ~0) - (x AND ~0)
a XOR b = (a OR b) - (a AND b). 另一种解决方案是使用查找表

于 2016-04-10T04:18:18.180 回答