GRY-Online.pl --> Archiwum Forum

c++ potrzebna pomoc(operacje na bitach)

15.01.2007
19:34
[1]

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ć?

15.01.2007
19:56
smile
[2]

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.

15.01.2007
19:58
[3]

zanteresowany [ Pretorianin ]

możesz zrobic to popszez utwożenie tablicy pomocniczej powodzenia

15.01.2007
20:39
[4]

asion [ Chor��y ]

To jak konkretnie na przykladzie przeksztalcic 8 bitow jednego chara na tablice 8 integerow?

15.01.2007
21:09
smile
[5]

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) :)

© 2000-2024 GRY-OnLine S.A.