001
12.04.2005, 17:55 Uhr
Pablo
Supertux (Operator)
|
Benutze Masken. Wenn du in einer Variable 4 Werte speicherst (gehen wir von einer int Variable mit 32 Bits), dann kannst du die Daten so lesen, indem du eine Maske setzt und sie mit der variable speicherst. Eine Maske ist eine spzielle Bitfolge von 0 und 1.
Angenommen, die willst nur die ersten 8 Bits einer int Variable lesen, dann würde die maske so aussehen 0000 0000 0000 0000 00000 0000 1111 1111 (24 Nullen + 8 Einsen)
C++: |
int read_the_first_8_little_bits(int zahl) { int maske = pow(2,8) - 1; /* maske = 0000 0000 0000 0000 00000 0000 1111 1111 return zahl & maske; }
|
edit: für die nächsten 8 Bits, wäre due Maske 0000 0000 0000 0000 1111 1111 0000 0000
also
C++: |
int read_the_second_8_little_bits(int zahl) { int maske = pow(2,16) - pow(2,8); /* maske = 0000 0000 0000 0000 1111 1111 0000 0000 return zahl & maske; }
|
usw.
edit2: zum Speichern geht genauso, allerdings die Maske würde so aussehen 1111 1111 ··· (hier die Zahl in 2er Kod.) ··· 1111 1111 -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 12.04.2005 um 18:01 Uhr von Pablo editiert. |