Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

czwartek, 10 lutego 2011

Kurs języka C: Operator dodawania bitowego |


Autor: Dondu

Kurs języka C: Spis treści

Operator bitowy | realizuje operację dodawania bitowego. Wynikiem dodawania bitowego jest jedynka, gdy na tych samych pozycjach co najmniej jeden bit jest jedynką. Gdy oba bity są zerami wynikiem także jest zero.

76543210 numery bitów
--------
10110010 zmienna a
01011000 zmienna b
--------
11111010 wynik dodawania bitowego: a | b


Przykład 1 (w kompilatorze)
  unsigned char a = 0b10110010;
  unsigned char b = 0b01011000;
  unsigned char wynik;

  wynik = a | b;  //dodawanie bitowe OR

Wynik działania programu możesz zobaczyć w kompilatorze CManiak.


Łączenie operatorów: |=

Jak każdy inny operator, także i ten można łączyć z operatorem przypisania.

Przykład 2 (w kompilatorze)
  wynik |= a;  //odpowiednik: wynik = wynik | a;



Podstawowe zastosowania:

Poniżej przykłady zastosowania dodawania bitowego. Będziemy w nich używać tzw. maski bitów, czyli liczby z odpowiednio ustawionymi bitami, w zależności od potrzeb.


1. Ustawianie wybranych bitów.
W przypadku, gdy chcemy ustawić jakieś bity wystarczy wykonać dodawanie bitowe danej zmiennej z maską, w której bity, które mają być ustawione są jedynkami, a pozostałe zerami.

Na przykład chcemy w zmiennej a ustawić bit 1, bit 3 oraz bit 6. Dodajemy więc bitowo zmienną a z maską ustawioną wg powyższej zasady:

76543210 numery bitów
--------
10110010 zmienna a
01001010 maska
--------
11111010 zmienna a z ustawionymi bitami 1, 3 oraz 6

W powyższym przykładzie ustawione zostały tylko bit 3 oraz bit 6, a bit 1 pozostał taki jaki był wcześniej, czyli jedynką.

Przykład 3 (w kompilatorze)
  unsigned char a = 0b10110010;

  //zeruj bity 1 i 4
  a &= 0b11101101;  //odpowiednik: a = a & 0b11101101;


W przykładach znajdują się liczby w zapisie dwójkowym, ale oczywiście można je zastąpić szesnastkowymi lub definicjami bitów, czy całych masek.

Kurs języka C: Spis treści

13
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

5 komentarzy:

  1. Witam
    Mam jedno, pewnie proste pytanie.
    Dlaczego w przykładzie pierwszym dodając dziesiętnie 178 do 88 nie wychodzi 266 tylko 250? Widzę, że binarnie na jedynkę zmienia się tylko 4 i 6 bit i wynik odpowiada po przeliczeniu liczbie 250, ale nie powinno być tak, że dodając dziesiętnie i binarnie powinniśmy dostać takie same wyniki?

    OdpowiedzUsuń
    Odpowiedzi
    1. Witaj.

      Dzieje się tak właśnie dlatego, że to jest dodawanie bitowe, a nie dziesiętne. Przedstawione jest na niebieskim tle przed pierwszym przykładem. Innymi słowy można powiedzieć, że każdy bit pierwszej zmiennej jest dodawany tyko z odpowiadającym mu bitem w drugiej zmiennej, a wynik przedstawiany tylko na tym samym bicie.

      Czy teraz już rozumiesz?

      Usuń
  2. Witam.
    Komentarz nie do zatwierdzenia, chciałbym poinformować że w przykładzie 3 na stronie(nie w kompilatorze) jest chyba błąd, ponieważ jest tutaj zastosowane mnożenie a nie dodawanie.
    Pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Faktycznie jest błąd - muszę się zastanowić, co miał reprezentować przykład nr 3 i poprawić :-)
      Dziękuję za zwrócenie uwagi!

      Usuń
  3. Przykład w kompilatorze też się chyba nie pokrywa.
    Suma bitowa 0b10110010 | 0b01001010 wychodzi: 0b11111010, czyli ustawienie bitów 1,3 i 6, natomiast zapisana jako odpowiednik iloczyn bitowy 0b10110010 & 0b01001010 daje: 00000010, czyli ustawia tylko pierwszy bit. Czy dobrze to rozumiem czy sam się zagubiłem w swoich myślach? :)
    Pozdrawiam i gratuluję bardzo fajnego kursu ;)

    OdpowiedzUsuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.