Funkce SetBit polopatě – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Funkce SetBit polopatě – C / C++ – Fórum – Programujte.comFunkce SetBit polopatě – C / C++ – Fórum – Programujte.com

 

David
~ Anonymní uživatel
177 příspěvků
8. 2. 2011   #1
-
0
-

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...

Nahlásit jako SPAM
IP: 83.208.59.–
KIIV
~ Moderátor
+43
God of flame
8. 2. 2011   #2
-
0
-

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)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
David
~ Anonymní uživatel
177 příspěvků
8. 2. 2011   #3
-
0
-

á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.

Nahlásit jako SPAM
IP: 83.208.59.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý