Inne wpisy na podobny temat:

Włączanie bitu

Aby włączyć bity używamy operatora sumy bitowej |.
Używamy zapisu:
x = x | maska albo
x |= maska
Tam, gdzie maska ma 0, wartości pozostają te same. Tam, gdzie maska ma 1, bity zerowe zmienią się na 1 (zostaną włączone), a bity 1 pozostaną.
W poniższym przykładzie włączamy bit 4 (BinAria06.java):

    int rgb = 167;
    System.out.println(Integer.toBinaryString(rgb));
    int maska = 8;
    System.out.println(Integer.toBinaryString(maska));
    int wynik1 = rgb | maska;
    System.out.println(Integer.toBinaryString(wynik1));

Po uruchomieniu na konsoli zobaczymy:

10100111
1000
10101111

jak widzimy czwarty bit od prawej został wyłączony.

Wyłączenie bitu

Aby wyłączyć bit używamy konstrukcji wykorzystującek negację i koniunkcję binarną:
x = x & ~maska albo
x &= ~maska
W poniższym kodzie (BinAria07.java) wyłączymy czwarty bit od prawej, który w poprzednim przykładzie został włączony.

       //włączenie bitu
        int rgb = 167;
        System.out.println(Integer.toBinaryString(rgb));
        int maska = 8;
        System.out.println(Integer.toBinaryString(maska));
        int wynik1 = rgb | maska;
        System.out.println(Integer.toBinaryString(wynik1));
        //-wyłączenie bitu
        int wynik2 = rgb & ~maska;
        System.out.println(Integer.toBinaryString(wynik2));

Po uruchomieniu kodu na konsoli zobaczymy:

10100111
1000
10101111
10100111

Odwrócenie bitu

odwrócenie bitu mozna uzyskać stosując konstrukcję:
x = x ^ maska albo
x ^= maska
W wyniku zastosowania maski, tam gdzie maska ma 0, wartości pozostaną niezmienione, a tam gdzie maska ma 1, zostaną odwrócone.
W poniższym przykładzie (BinAria08.java) odwracamy bit trzeci od prawej:

        //włączenie bitu
        int rgb = 167;
        System.out.println(Integer.toBinaryString(rgb));
        //odwrócenie bitu
        int maska1 = 4;
        System.out.println(Integer.toBinaryString(maska1));
        int wynik3 = rgb ^ maska1;
        System.out.println(Integer.toBinaryString(wynik3));

Po uruchomieniu tego kodu na konsoli zobaczymy:

10100111
100
10100011

Sprawdzenie wartości bitu

Sprawdzenie wartości bitu wykonujemy we wcześniej opisany sposób Sprawdzanie parzystości Java
Przykład (Binaria09.java) – wykorzystuję tu warunek if oraz pokazuję to samo przy użyciu operatora trójargumentowego

        //włączenie bitu
        int rgb = 167;
        System.out.println(Integer.toBinaryString(rgb));
        //sprawdzenie wartości bitu
        int maska4 = 4;
        System.out.println(Integer.toBinaryString(maska4));
        int wynik4;
        if ((rgb & maska4) == maska4) {
            wynik4 = 1;
        } else {
            wynik4 = 0;
        }
        System.out.println(wynik4);
        //operator trojargumentowy
        int wynik5 = (rgb & maska4) == maska4 ? 1 : 0;
        System.out.println(wynik5);

Po uruchomieniu kodu na konsoli zobaczymy:

10100111
100
1
1

Ustawienie maski

nr bitu, na którym
chcemy wykonać
operację
wartość
maski
1 1
2 2
3 4
4 8
5 16
6 32
7 64
8 128

Jeśli chemy w masce użyć więcej niz jedną jedynke wartości z tabeli dodajemy. Suma wartości (255)10 = (11111111)2.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *