Čtení a zápis bitu pomocí masky – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Čtení a zápis bitu pomocí masky – C / C++ – Fórum – Programujte.comČtení a zápis bitu pomocí masky – C / C++ – Fórum – Programujte.com

 

yaqwsx+9
Posthunter
18. 9. 2010   #1
-
0
-

Potřeboval bych zapisovat číst bit z/do bytu podle masky. Tzn. mám char s obsahem 10000001 a masku 100000000. Takže při čtení bych měl dostat 1. Jak na to? V bitových operacích moc sběhlý nejsem a nějak si s tím nevím rady...

Dále mě zajímá ještě jeden detail, nikde jsme nenašel přesnou odpověď. Jak je definován směr posunu bitů v operátoru >>, popř. <<? Je směr pevně daný, např. >> vždy posunuje bity na nižší úroveň, nebo je závislý na platformě?

Předem děkuji za odpověď

Nahlásit jako SPAM
IP: 85.160.116.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
KIIV
~ Moderátor
+43
God of flame
18. 9. 2010   #2
-
0
-

ktera binarni operace vrati kdykoliv je na vstupu 0 na vystupu tez nulu?

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
zdenda
~ Anonymní uživatel
257 příspěvků
19. 9. 2010   #3
-
0
-

Maskuje se bitovým andem. << posunuje k nejvýznamějšímu bitu (1<<1==2), >> naopak. Používej unsigned typy (char je většinou signed).

#define GETBIT(val, bit) !!((val) & (1 << (bit)))

Nahlásit jako SPAM
IP: 213.211.51.–
zdenda
~ Anonymní uživatel
257 příspěvků
19. 9. 2010   #4
-
0
-

posunuje k nejvýznamějšímu bitu


posunuje směrem k nejvýznamějšímu bitu

Nahlásit jako SPAM
IP: 213.211.51.–
yaqwsx+9
Posthunter
19. 9. 2010   #5
-
0
-

Už mi to došlo! Vždyť je to tak jednoduché; To zdenda : Díky za nakopnutí

unsigned char data = 0xEF

unsigned char maska = 0x80
//Získání bitu
bool bit = bool(data & maska);
//vynulování bitu
data = data & ~maska;
//nastavení bitu
data = data | maska;

Nahlásit jako SPAM
IP: 85.160.94.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
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, 41 hostů

Podobná vlákna

Zapis a cteni v TxT — založil Mudraon

čtení a zápis souboru — založil _Radek_

čtení a zápis do souboru 3.2 — založil dragon124

Obecné čtení(zápis) dat — založil lojza

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ý