0
public byte[] method(int var1)
{
        if(var1 == ~L.length) //<- this
            return a(i1, 0, false);
}

我将如何修复

if(var1 == ~L.length)

删除~

我必须==改为!=吗?

if(var1 != L.length)

谢谢,这可能是这种类型的最后一个问题。

ps.>感谢您帮助我解决以前的问题

~(-1 + var1) < -1var1 > 1

~(var1 & 0x22) != -1(var1 & 0x22) != 0

~var1 < ~var2var1 > var2

4

2 回答 2

2

正如我之前告诉过你的,你可以~x-x - 1

所以,if(var1 == ~L.length)等价于if(var1 == -L.length - 1)

于 2011-07-19T02:05:24.207 回答
0

如果它再次尝试做 2 的补码技巧:

-var1 == L.length + 1

或者

var1 + 1 == -L.length

(基本上使用事实~x == -(x+1) == -x - 1

另一种重写方法是:

var1 ^ L.length == -1
于 2011-07-19T01:59:51.827 回答