MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | SYNOPSIS |
| 2 | string clear_bit(string str, int n); |
| 3 | |
| 4 | BESCHREIBUNG |
| 5 | Gibt einen neuen String zurueck, in dem das n-te Bit im String <str> |
| 6 | nicht gesetzt ist. Dabei wird <str> selbst nicht veraendert. |
| 7 | |
| 8 | Jedes Zeichen enthaelt sechs Bits. So kann in jedem Zeichen eine Zahl |
| 9 | zwischen 0 und 63 (2^6=64) gespeichert werden. Das erste Zeichen ist |
| 10 | der Leerschlag " " mit Wert 0. Das erste Zeichen im String ist jenes |
| 11 | mit den niedrigsten Bits (0 bis 5). |
| 12 | |
| 13 | BEISPIELE |
| 14 | string s; |
| 15 | s = clear_bit("_", 5); |
| 16 | |
| 17 | Weil "_" den hoechsten moeglichen Wert enthaelt (63), enthaelt die |
| 18 | Variable s nun das Zeichen "?", das dem Wert 31 entspricht (63-2^5=31). |
| 19 | |
| 20 | string s; |
| 21 | s = clear_bit("?<",3); |
| 22 | s = clear_bit(s, 8); |
| 23 | |
| 24 | s enthaelt nun den String "78". "?" entspricht dem Wert 31 und "<" dem |
| 25 | Wert 28. "?<" entspricht also dem Wert 31+28<<6=31+1792=1823, was in |
| 26 | Binaerschreibweise (hoechstes Bit rechts) 11111000111 ergibt. Werden |
| 27 | aus dieser Zahl die Bits 3 und 8 (die Nummerierung beginnt mit dem |
| 28 | 0. Bit) ergibt dann: 11101000011. Die ersten 6 Bits 010111 sind in |
| 29 | Dezimalschreibweise 23. Die zweiten 6 Bits (0)11000 ergeben 24 in |
| 30 | Dezimalschreibweise. Nun entspricht der Wert 23 dem Zeichen "7" und |
| 31 | der Wert 24 dem Zeichen "8". Der String s enthaelt also "78". |
| 32 | |
| 33 | SIEHE AUCH |
| 34 | set_bit(E), next_bit(E), last_bit(E), test_bit(E), count_bits(E), |
| 35 | and_bits(E), or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E) |