Java IXOR ~ [одна сторона] вопрос рефакторинга равенства
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) < -1
в var1 > 1
~(var1 & 0x22) != -1
в (var1 & 0x22) != 0
~var1 < ~var2
в var1 > var2
2 ответа
Решение
Как я уже говорил, вы можете заменить ~x
с -x - 1
Так, if(var1 == ~L.length)
эквивалентно if(var1 == -L.length - 1)
Если он пытается снова выполнить 2 трюка с дополнениями:
-var1 == L.length + 1
или же
var1 + 1 == -L.length
(В основном используйте тот факт, что ~x == -(x+1) == -x - 1
)
Еще один способ переписать это:
var1 ^ L.length == -1