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.