[c] instrukcja zamieniająca bity

FEMO
Użytkownik
Użytkownik
Posty: 348
Rejestracja: 13 lut 2007, o 17:15
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 163 razy

[c] instrukcja zamieniająca bity

Post 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
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[c] instrukcja zamieniająca bity

Post 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.
ODPOWIEDZ