Forum » Programiranje » [c++] Branje bita iz datoteke
[c++] Branje bita iz datoteke
purki ::
Pozdravljeni
Kako bi čim manj komplicirano v zanki naredil branje enega samega bita v datoteki (0 ali 1), nato drugi, tretji bit ... EOF. Pomembno je da stvar zavzame čim manj ciklov
Kako bi čim manj komplicirano v zanki naredil branje enega samega bita v datoteki (0 ali 1), nato drugi, tretji bit ... EOF. Pomembno je da stvar zavzame čim manj ciklov
napsy ::
Prebereš bajt nato pa uporabiš enega izmed bitnih operatorjev (and, or) da ugotoviš v kakšnem stanju je določen bit.
"If you die, you die. But when you live you live. There is no time to waste."
Tutankhamun ::
char byte; // bajt, ki si ga prebral iz datoteke for (int bit = 0; bit < 8; ++bit) cout << "bit " << (int) bit << ((byte & (1 << bit)) ? " je postavljen" : " ni postavljen") << endl;
recimo da je ima spremenljivka byte vrednost 0x9F bo izpis
bit 0 je postavljen
bit 1 je postavljen
bit 2 je postavljen
bit 3 je postavljen
bit 4 je postavljen
bit 5 ni postavljen
bit 6 ni postavljen
bit 7 je postavljen
AMD Phenom QUAD 9950 Black Edition, 8GB
purki ::
Še neki:
1)
Kako bi zamenjal LSB in MSB in vse bite ki so umes:
Na primer 11011100 naj bi postalo 00111011 ?
2)
Ali v Cju obstaja operator shift on carry. Problem je ko šiftam neke bite se na drugi strani pojavljajo ničle, jaz pa bi namesto njih rad izpadle bite
1)
Kako bi zamenjal LSB in MSB in vse bite ki so umes:
Na primer 11011100 naj bi postalo 00111011 ?
2)
Ali v Cju obstaja operator shift on carry. Problem je ko šiftam neke bite se na drugi strani pojavljajo ničle, jaz pa bi namesto njih rad izpadle bite
snow ::
Vse se da :)
Bite zamenjaš tako da v eni for zanki preverjaš če je bit postavljen in če je postaviš bit v eni drugi spremenljivki na nasprotnem koncu.
Rotate (shift + carry) operatorja ni.
Lahko pa si napišeš eno funkcijo za to. Shift + en bitni or če je na nasprotnem koncu bit postavljen.
Bite zamenjaš tako da v eni for zanki preverjaš če je bit postavljen in če je postaviš bit v eni drugi spremenljivki na nasprotnem koncu.
for(int i=0;i<8;i++) { if(lala&1<<i) { bla|=1<<(7-i); } }
Rotate (shift + carry) operatorja ni.
Lahko pa si napišeš eno funkcijo za to. Shift + en bitni or če je na nasprotnem koncu bit postavljen.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
Tutankhamun ::
1. če mislš samo na izpis potem sam popravš tist kar sm ti napisu
če pa hočeš prov spremenljivko mau prezrcalt pa tko
pol na konc pa lahko spet uporabš uno funkcijo za izpis...
for (int bit = 7; bit >= 0; ++bit) cout << "bit " << (int) bit << ((byte & (1 << bit)) ? " je postavljen" : " ni postavljen") << endl;
če pa hočeš prov spremenljivko mau prezrcalt pa tko
unsigned char byte, tmpbyte; // byte je spremenljivka, ki jo boš zrcalu byte = 0x9F; tmpbyte = 0; for (int i = 0; i < 8; ++i) (byte & (1 << i)) ? tmpbyte += (0x80 >> i) : tmpbyte += 0; byte = tmpbyte;
pol na konc pa lahko spet uporabš uno funkcijo za izpis...
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
Tutankhamun ::
namest tega (byte & (1 << i)) ? tmpbyte += (0x80 >> i) : tmpbyte += 0; napiš raj if (byte & (1 << i)) tmpbyte += (0x80 >> i); mau krajš
AMD Phenom QUAD 9950 Black Edition, 8GB
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Pohitritev spletne straniOddelek: Izdelava spletišč | 2284 (1227) | vezalke |
» | Zaščita datotekOddelek: Pomoč in nasveti | 2265 (1674) | fosil |
» | [Naloga] : Max kompresija testne datotekeOddelek: Programiranje | 3113 (2037) | StratOS |
» | Kje dobit elektromotorcek, ki se pocasi vrti...Oddelek: Elektrotehnika in elektronika | 5235 (4673) | madboy |
» | Tlorisi hisOddelek: Loža | 7339 (7040) | Sodom |