Wie Ganzzahlen verwaltet werden
-
Arbeite mich seit einem Monat gemächlich in C rein und hänge momentan total fest. Es geht wie der Name schon sagt um die Ganzzahlen. Und zwar ist in dem Buch, dass ich benutze eine Tabelle mit einem Beispielsatz ''Ich bin 2 Byte groß und vom Typ Short'' Die Begriffe Byte und Short sind kein Problem, nur komme ich nicht mit dem Beispiel klar
Ich bin 2 Byte groß und vom Typ short
In diesen 2 Byte befinden sich 16 einzelne Bits:Ich bin 2 Byte groß und vom Typ short
16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|
Jedes dieser einzelnen Bits kann einen Wert von Eins oder Null darstellenIch bin 2 Byte groß und vom Typ short
16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|
0 |0 |0 |0 |0 |0 |0 |0|0|0|0|0|1|0|1|1|
--> Bei dieser Bilddarstellung weißt die Variable den Wert 11 auf (short-Variable)Gezählt wird nicht von 1-16 sondern von 0-15
Mein Problem ist jetzt explizit, wie man auf die Gesamtzahl 11 bei diesem Beispiel kommt. Ich weiß, dass ein Bit ja zwei verschiedene Aussagen treffen kann (0 und 1) und es sich deshalb um eine Zweierpotenz handeln muss, die von rechts nach links ausgelesen wird...aber wie rechne ich das?
Hier stocke ich gerade und komme nicht weiter...
-
1011(binär) heißt 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 8 + 2 + 1 = 11
-
-
Dankeschön. Hab's verstanden.
Wenn ich im Dualsystem rechne nehme ich also die Werte und die jeweilige Stelle.
--> 1011 wäre dann ja in der Tabelle
3|2|1|0| - bits
1|0|1|1|2^3 + 0*2^2 + 2^1 + 2^0
8 + 0 + 2 + 1 = 11 jaaa (:
--> Dankeschön-closed-
-
Du musst auch aufpassen wegen der Vorzeichen, signed und unsigned Typen interpretieren die "oberste" Bitstelle jeweils anders.
Bei Multibytetypen ( sizeof(Typ)>1 ) solltest du auch auf die Bytereihenfolge achten ( Endianness ).