Umrechnung einer negativen Zahl im Datentyp short int.
-
Ich bin mir unsicher was das Rechnen mit den Vorzeichenbehafteten Zahlen angeht.
Wie lautet Bitdarstellung der Zahl -291 im Datentyp short int
291 : 2 = 145 Rest: 1
145 : 2 = 72 Rest: 1
72 : 2 = 36 Rest: 0
36 : 2 = 18 Rest: 0
18 : 2 = 9 Rest: 0
9 : 2 = 4 Rest: 1
4 : 2 = 2 Rest: 0
2 : 2 = 1 Rest: 0
1 : 2 = 0 Rest: 1Resultat: 100100011
Wäre dann -291 = 1100100011 ?
-
Vorzeichen?
-
Kommt ganz auf die Darstellungsweise an. Da gibt es verschiedene Möglichkeiten.
Aber normalerweise wird das Zweierkomlement gebildet:
- höchstes Bit gibt Vorzeichen an
- restlichen Bits werden negiert
- +1=> -291 = 1011011101
-
danke
, aber irgendwie komme ich nicht auf die 10..... ist die null zuviel?-291 = 1011011101
-291 = 11011101
1. Vorzeichen ignorieren und ins Binärsystem umrechnen: 291(10) = 100100011(2)
2. Invertieren, da negativ: 011011100
3. Eins addieren, da negativ: 011011100 + 00000001 = 11011101
-291(10) = 11011101(2)
-
hmm...vllt. hilfts:
binärzahlen negieren funktioniert so:
alle zahlen invertieren und anschließend 1 addieren.
-
MarcR schrieb:
...
Und der nächste Punkt: Beachte dabei die Größe des Datentyps. Selbst wenn 3 die binäre Darstellung "10" hat, so stehen je nach länge des Datentypes noch mehr oder weniger 0en davor.
cu André
-
da short-INT 16Bit hat wäre die -291
1. Vorzeichen ignorieren und ins Binärsystem umrechnen: 291(10) = 100100011(2)
2. Invertieren, da negativ: 011011100
3. Eins addieren, da negativ: 011011100 + 00000001 = 11011101
-291(10) = 11011101(2)Vorzeichenbit "15tes Bit" / 8-14 Bit auffüllen / 0-7 Bit -291
[1] / 000000 / 11011101-> 1000000011011101
Kann das Stimmen?
-
Du brauchst nichts auffüllen, beachte einfach die Länge des Datentypen:
1. Vorzeichen ignorieren und ins Binärsystem umrechnen (und hier schon die Breite beachten): 291(10) = 0000000100100011(2)
2. Zweierkomplement bilden, da negativ:
2a. Invertieren: 1111111011011100
2b. Eins addieren: 1111111011011100 + 1 = 1111111011011101
-
oh, merci

-
du kannst auch erst im Nachhinein auffüllen, allerdings werden negative Zahlen mit 1 statt mit 0 aufgefüllt