Sprawdzanie parzystości Java
Czasami zachodzi potrzeba sprawdzenia parzystości liczby np. będącej wynikiem obliczenia. Oznaczmy ja jako x
. Najszybszy sposób obliczenia polega na zastosowaniu operatora koniunkcji binarnej &
:
if((x & 1) == 0){...}
Na ostatniej pozycji liczby wyrażonej w postaci binarnej może wystąpić albo 0 albo 20 czyli 1. Jeżeli występuje 1 liczba jest nieparzysta. Jeżeli występuje 0 – liczba jest parzysta.
W podanym przykładzie wykonujemy maskowanie binarne wykonując koniunkcję ostatniego elementu liczby x z 1. Jeżeli w podanym przykładzie x równa się 1 wynik będzie 1, a wynikiem porównania będzie false
. Liczba jest nieparzysta. Jeżeli x równa się 0, wynik będzie 0, porównanie zwróci true
. Liczba jest parzysta.
Nawiasy są konieczne ze względu na priorytet operatorów.
A oto stosowny przykład w języku Java:
package binaria; public class BinAria01 { public static void main(String[] args) { int a = 107; if((a & 1) == 0){ System.out.println("liczba " + a + " jest parzysta"); } else{ System.out.println("Liczba " + a + " jest nieparzysta"); } //- int b = 108; if((b & 1) == 0){ System.out.println("liczba " + b + " jest parzysta"); } else{ System.out.println("Liczba " + b + " jest nieparzysta"); } } }
Po uruchomieniu kodu na konsoli otrzymujemy:
Liczba 107 jest nieparzysta liczba 108 jest parzysta