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
Другие вопросы по тегам