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
-
- 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
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:
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.
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
Jesli chcesz na jedynki, to ustawiasz odwrotna maske i robisz operacje OR.
Pozdrawiam.