Как использовать оператор & в Java? портирование кода C - PullRequest
3 голосов
/ 20 января 2012

Итак, у меня есть этот простой код на C.

 if (flags & 4)

Теперь, когда я портирую строку на java:

 if ((flags & 4) == 1)

Она не срабатываетКак правильно перенести код C на Java?Что я делаю не так с оператором &?

Ответы [ 3 ]

15 голосов
/ 20 января 2012

Это должно быть != 0, а не == 1:

if ((flags & 4) != 0)

Причина этого в том, что в C все, что не равно нулю, считается true в операторе if, тогда какJava заставляет вас использовать логические значения.В этом случае выражение может быть равно либо 4, либо 0, поэтому сравнение его с 1 всегда ложно.

8 голосов
/ 20 января 2012

if ((flags & 4)==4)

Когда вы используете поразрядно и «маскируете» все биты, кроме одного, результат будет не один, а бит, который вы проверили.

6 голосов
/ 20 января 2012

Попробуйте

if ((flags & 4) != 0)

== 1 не будет работать даже в C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...