bit parzystosci w C

Loading thread data ...
Reply to
invalid unparseable
Reply to
Piotr Wyderski

Thus wrote "Pawe?" snipped-for-privacy@poczta.onet.pl>:

Można prościej ;^)

Na przykład tak:

x=(x&0x0f)^(x>>4); x=(x&0x03)^(x>>2); x=(x&0x01)^(x>>1);

Albo to samo, tylko szybciej:

x^=x>>4; x^=x>>2; x^=x>>1; x&=1;

Lub inne wariacje na temat. Bo to czego potrzebujesz to wszystkie bity zexorowane ze sobą.

Paweł

Reply to
Paweł Więcek

W artykule <ei01b1$gja$ snipped-for-privacy@news.onet.pl> Paweł napisal(a):

Jak potrzebujesz szybciej to mozesz zrobic tablice wynikow i adresowac tym bajtem. W druga strone tak samo. KO

Reply to
Krzysztof Olesiejuk
Reply to
invalid unparseable

Paweł napisał(a):

^^^^^^^^^^^^^^^^^^^^ tutaj masz blad: powinno byc: ..10 ^ ..11 = ..01 a nastepnie: ..1 ^ ..0 = ..1 czyli sie zgadza (wstawilem kropki, bo pozostale bity sa 0). Pewnie to juz rozgryzles, ale (tak jak napisal Pawel Wiecek) trzeba zeXORowac wszystkie bity ze soba. Mozna to zrobic po kolei: czyli 1z2, nastepnie wynik tego z 3, nastepnie wynik tego z 4 itd... Albo szybciej, tak jak rozpisal Pawel: podzielic bajt na polowe i zXORowac, nastepnie otrzymany wynik 4bitowy podzielic po 2 bity i zXORowac i w koncu zXORowac 2bity ze soba. I mamy wynik

pozdrawiam chojny

Reply to
chojny

Hm, czy pawel podal jaki to procesor ? Bo wiele takiej operacji nie ma..

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.