asion [ Chor��y ]
c++ potrzebna pomoc(operacje na bitach)
Potrzebuje pomocy jak przeprowadzać operacje na bitach w c++. Powiedzmy ze mamy zadanie:
Wprowadzamy tekst 8 znakow czyli mamy 64 bity.
Przeprowadzic operacje zmiany bitow tak aby 1(pierwszy)bit znalazl sie na pozycji 40, 2(drugi)bit na pozycji 36 itp.
Jak to zrobić?
Jeremy [ Konsul ]
Musisz zastosować przesunięcia bitowe (operator << i >>) i maskę logiczną (iloczyn logiczny operatorem &). Inaczej (w sensie bezposrednio) w c++ do bitów się nie dobierzesz - do tego są wstawki assemblerowe.
zanteresowany [ Pretorianin ]
możesz zrobic to popszez utwożenie tablicy pomocniczej powodzenia
asion [ Chor��y ]
To jak konkretnie na przykladzie przeksztalcic 8 bitow jednego chara na tablice 8 integerow?
Jeremy [ Konsul ]
wiec tak: poprawcie mnie jeżeli się mylę:
mamy jaką liczbę:
char myLiczba = 15; (bitowo 00001111)
I teraz dla kazdego bitu nakladasz maskę bitową:
char maska0 = 1; // Dla najmniej znaczącego bitu
char maska1 = 1 << 1; // Dla drugiego bitu
char maska2 = 1 << 2; // Dla trzeciego bitu
....
itd
(oczywiście wszystko może być w jednej pętli - musisz pokombinować)
char liczbaANDmaska;
czyli liczbaANDmaska = liczba & maska(tutaj numer bitu);
i przesunięcie bitowe (tym razem w prawo) zeby na pozycji LSB znalazlo sie 0 lub 1
liczbaANDmaska >> i (gdzie i jest krokiem w pętli - tzn. który bit wyciągałeś)
i masz: albo 0 albo 1 (na danej pozycji) z którym możesz zrobić co chcesz :)
EDIT: Nawet wrzucić do tabeli intów (po zrzutowaniu typów) :)