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