Bits setzen
-
Hallo,
ich hab grade mit C angefangen und komm mit diesem Bespiel noch nicht ganz klar!
Nehmen wir also als Beispiel einen 32 Bit Wert, in dem
wir folgende Bits setzen wollen: 0, 13, 18, 27.
Man kann sich leicht vorstellen, dass man mit dem Dezimalsystem nicht
weit kommt, wenn man keinen Taschenrechner zur Verfugung hat (oder wer
weiss auswendig, was 227 ergibt? Arbeitet man mit hex-Zahlen, dann geht es
allerdings leicht:
Wir teilen die Zahl in Viererbloecke, denn diese entsprechen ja den einzelnen
hex-Stellen. Der erste Block umfasst also die Bits 0{3, der zweite die
Bits 4{7 etc.
Wir betrachten die einzelnen Bloecke und sehen nach, welche Bits in ihnen
gesetzt sind:
{ In Block 0 ist nur das Bit 0 gesetzt. Die erste hex-Stelle (von rechts!)
ist also 1.
{ In Block 1 ist nichts gesetzt, also ist diese Stelle 0
{ In Block 2 ist nichts gesetzt, also ist diese Stelle 0
{ In Block 3 faellt das Bit 13, es ist hier das zweite von rechts, also ist diese
Stelle 2
{ In Block 4 faellt das Bit 18, es ist hier das dritte von rechts, also ist diese
Stelle 4
{ In Block 5 ist nichts gesetzt, also ist diese Stelle 0
{ In Block 6 faellt das Bit 27, es ist hier das vierte von rechts, also ist diese
Stelle 8
{ In Block 7 ist nichts gesetzt, also ist diese Stelle 0
Fassen wir jetzt unsere einzelnen Stellen zusammen, dann ergibt sich die
32 Bit hex-Zahl 0x08042001.Naja ich versteh das mit der Blockbelegung nicht so ganz und das mit dem Hexadezimal ist mir auch noch recht unklar...
Ich komme mir grade auch ziemlich doof vor...
naja, vielen Dank für eure Hilfe!!!
-
Also was da für eine Hexadecimale Zahl raus kommt hast du ja wohl verstanden und die Blöcke hast du auch zusammengesetzt. Ich versteh nicht ganz dein Problem, das liegt mit under daran das die Frage sehr allgemein formuliert ist.
-
Erstmal Danke für deine flotte Antwort!
Sorry war echt undeutlichDies war das Bespiel:
**Nehmen wir also als Beispiel einen 32 Bit Wert, in dem
wir folgende Bits setzen wollen: 0, 13, 18, 27.
Man kann sich leicht vorstellen, dass man mit dem Dezimalsystem nicht
weit kommt, wenn man keinen Taschenrechner zur Verfugung hat (oder wer
weiss auswendig, was 227 ergibt? Arbeitet man mit hex-Zahlen, dann geht es
allerdings leicht:
Wir teilen die Zahl in Viererbloecke, denn diese entsprechen ja den einzelnen
hex-Stellen. Der erste Block umfasst also die Bits 0{3, der zweite die
Bits 4{7 etc.
Wir betrachten die einzelnen Bloecke und sehen nach, welche Bits in ihnen
gesetzt sind:
{ In Block 0 ist nur das Bit 0 gesetzt. Die erste hex-Stelle (von rechts!)
ist also 1.
{ In Block 1 ist nichts gesetzt, also ist diese Stelle 0
{ In Block 2 ist nichts gesetzt, also ist diese Stelle 0
{ In Block 3 faellt das Bit 13, es ist hier das zweite von rechts, also ist diese
Stelle 2
{ In Block 4 faellt das Bit 18, es ist hier das dritte von rechts, also ist diese
Stelle 4
{ In Block 5 ist nichts gesetzt, also ist diese Stelle 0
{ In Block 6 faellt das Bit 27, es ist hier das vierte von rechts, also ist diese
Stelle 8
{ In Block 7 ist nichts gesetzt, also ist diese Stelle 0
Fassen wir jetzt unsere einzelnen Stellen zusammen, dann ergibt sich die
32 Bit hex-Zahl 0x08042001.
**Ich hab das mit dem in Blöcke zusammenfassen nicht so ganz geschnallt, wieso z.B. in Block 1 und 2 nichts gesetzt wird und dann in Block 3 die 13 steht?!?!
Ich hoffe ich hab mich deutlicher ausgedrückt!
-
-
wie ich das umrechne ist mir jetzt so weit klar...
nur das mit den Bits hier peil ich net so ganz... wie wird das aufgeteilt??
wie kommen die auf die Hexadezimale?
-
wie das binär auszusehen hat schnall ich... nur halt nicht auf hexadezimaler schreibweise
-
Also wir halten das mal etwas kompakter und nehemn 16 Bit. Dann sieht das so aus
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Wert(bsp) 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 Block 3 | 2 | 1 | 0
Wie du bereits beschrieben hast sind in dem 0. Block dann die Bits 0 bis 3 enthalten.
Block Binär Hex Decimal
0 0110 6 6
1 1101 D 13
2 1011 B 11
3 1010 A 10und jetzt hängen wir die Hexadecimalen zusammen und es entsteht 0xABD6.
In deinem Fall wir in Block 1 und 2 nichts gesetzt da du ja nur die Bits 0,13, ... Setzt, von diesen Bits ist keines in den benanten Blöcken.
Ich hoffe ich hab die Frage jetzt getroffen
-
danke schön für deine Hilfe!!!!!
Ich habs jetzt endlich geschnallt!!!