Strona 1 z 1
[c] instrukcja zamieniająca bity
: 30 lis 2008, o 13:51
autor: FEMO
Napisz instrukcję w języku C zamieniającą trzy najmłodsze bity liczby, której wartość jest zapisana w zmiennej typu x na:
a) zera
b) jedynki
Rozwiązanie nie powinno zależeć od liczby bitów przeznaczonych na przechowywanie x.
prosze o wskazówki jak rozwiązać to zadanie
[c] instrukcja zamieniająca bity
: 30 lis 2008, o 18:26
autor: soku11
Klania sie tutaj mechanizm masek bitowych
Zakladamy, ze nasz x to np. 1101010101. Teraz aby wyzerowac 3 najmlodsze bity uzywamy maski bitowej wygladajacej tak 1111111000. Aby wyzerowac bity w liczbie x robimy operacje logiczna AND na masce i x, czyli:
Kod: Zaznacz cały
1101010101
1111111000 AND
-------------------
1101010000
I bity mamy wyzerowane W c bedzie to polegalo na zrobieniu zmiennej typu takiego jak x, wstawienie wartosci maksymalnej i przesuniecie w lewo o 3 pozycje. Otrzymamy maske. Wtedy poprostu wywolujemy x^=maska;
Jesli chcesz na jedynki, to ustawiasz odwrotna maske i robisz operacje OR.
Pozdrawiam.