Zapis n&1 skonwertuje się w IF do true dla liczb nieparzystych, musiałbyś sobie po prostu najlepiej rozpisać binarnie np. liczbę 8 i liczbę 7 i dodać binarnie jedynkę i sam zobaczysz.
Kiedyś pisałem artka o operatorach binarnych, co prawda w JS ale zasada jest ta sama:
http://poradnik.drogimex.pl/2017/03/31/operatory-bitowe-nie-takie-straszne/
Generalnie jeśli n jest liczbą nieparzystą, to n&1 zwraca 1, a jeśli liczbą parzystą to zero. Pozostaje więc kwestia jak w danym języku programowania jest konwertowane 1 i 0 do boolean.