Ahoj, potřeboval bych vysvětlit asi úplně primitivní věc. A to funkci pro nastavování bitu v bytu.
#define SetBit(AllBits,Posi)(AllBits |=(1<<Posi)); AllBits je upravovaný byte Posi je pozice bitu tedy 0,1,2,3,4,5,6 nebo 7
Předstvím-li si že AllBits je 0 tedy 00000000 a chci nastavit 0tý bit --SetBit(AllBits,0)-- tedy Posi je taky 0, posunu ho bitově o jedno doleva pořád je to 00000000 a 00000000 |00000000 je pořád 0. Budu-li chtít nastavit 5.bit --SetBit(AllBits,5)-- tak Posi je 00000101, posunu doleva 00001010 a to když bitově přičtu k 00000000 je z toho 00001010. Tedy nesmysl. Všude je tato funkce popsána, ale fakt nevím, co na ní chápu špatně? Přeci když chci změnit 5.bit musím k tomu přičíst 00100000 tedy 16...
Fórum › C / C++
Funkce SetBit polopatě
chapes hlavne spatne, co se kam posouva...
1 << pos znamena posunuti: 00000001 o pos pozic doleva..
tj:
1<< 0 => 1
1<< 1 => 2
...
1<< 6 => 64
1<< 7 => 128
a pak je tam samozrejme bitovy OR.. a definice OR je "kdykoliv se na kteremkoliv ze vstupu objevi 1 je vystup 1" .. u bytoveho OR ( | ) se to provadi pro kazdou pozici nezavisle (bit po bitu zvlast)
áha, já to chápal, že u např. 1<<6 je to "6" v desítkové soustavě, tedy binárně 00000110 a pak se to posune celé bitobě o "1" doleva, tedy na 00001100. A ono je to přesně opačně. Takže to, jak jsem to myslel já, by vlastně bylo 6<<1. Teď už je mi to jasné, díky moc.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 10 hostů
Podobná vlákna
Instalace Android SDK - prosím polopatě — založil Algon
Volání funkce z jiné třídy ukazatelem typu obecné funkce — založil pretis
šablonová funkce jako členská funkce třídy - jde to? — založil yaqwsx
C Funkce jako parametr funkce — založil František Brámek
Moderátoři diskuze