Wie wandelt man eine negative Dezimalzahl in eine Binärzahl um ? Also bei postiven Zahlen sieht es ja so aus Bsp.: Zahl 42 42/2=21 Rest 0 21/2=10 Rest 1 10/2=5 Rest 0 Binärzahl: 1 0 1 0 1 0 5/2=2 Rest 1 2/2=1 Rest 0 1/2=0 Rest 1 Wie würde die Binärzahl bei -42 aussehen ?
Mit dem 2er-Komplement. 1. Schritt : Alle Stellen invertieren 2. Schritt : 1 addieren Binärzahl : 00101010 (42) Invertiert: 11010101 1 addieren: 1 -------- Ergebnis : 11010110 (-42) Wichtig: Das linke Bit ist immer das Vorzeichen und hat keinen Stellenwert.
GeraldB schrieb: > Wichtig: Das linke Bit ist immer das Vorzeichen und hat keinen > Stellenwert. ... oder den Stellenwert -128, siehe mein Link zu Wikipedia.
https://de.wikipedia.org/wiki/Zweierkomplement man könnte die binäre 42 Umwandeln in ihre "negative" Entsprechung im Zweierkomplement. Sämtliche Stellen werden umgekehrt, bzw. negiert und dann noch eine 1 draufaddiert. Das wäre dann erstmal - ausgehend von dem Binärformat 8-Bit 00101010 11010101 bzw. nach +1 11010110
HildeK schrieb: > GeraldB schrieb: >> Wichtig: Das linke Bit ist immer das Vorzeichen und hat keinen >> Stellenwert. > > ... oder den Stellenwert -128, siehe mein Link zu Wikipedia. Nicht oder (im üblichen Sprachgebrauch), sondern Exclusiv-Oder. Entweder repräsentiert es das Vorzeichen oder (alternativ-oder!) den Stellenwert 2^7=128. Das erste ist der Fall, wenn der Ausgangswert negativ ist, das zweite ist der Fall, nachdem man den negativen Ausgangswert in die nicht vorzeichenbehaftete Darstellung umgewandelt hat. Lustigerweise passiert im Fall von -128 nämlich in der binären Repräsentation dabei rein garnix, die ist vor und nach der Wandlung gleichermaßen 0b10000000.
HildeK schrieb: > ... oder den Stellenwert -128, siehe mein Link zu Wikipedia. Das kommt drauf an, ob es sich um eine 8Bit Zahl handelt oder nicht. Bei einer 16Bit Zahl hätte das linke Bit alternativ eher den Wert -1*2^(16-1) ;-)
man könnte es etwas entschärfter formulieren, bei hexadezimalzahlen, falls sie ein Vorzeichen bekommen/ negativ sind haben die mindestens eine 8 vorne (8-f). Mit Vorzeichen in den negativen Bereich shiften, ist auch sehr interessant, sollte man sich, falls noch nicht gesehen, unbedingt mal irgendwo ansehen. Die hexadezimalen Entsprechungen der beiden Zahlenausdrücke oben sind 2A und D6.
rbx schrieb: > Mit Vorzeichen in den negativen Bereich shiften, ist auch sehr > interessant, sollte man sich, Man kann logisch (dann kommt eine 0 rein) oder arithmetisch (dann wird das Vorzeichenbit genommen) nach rechts schieben. Im C-Standard ist nicht definiert was genommen wird , auch wenn man meint, das hängt von signed/unsigned Typen ab. Kann es, muss es aber nicht.
> Wie wandelt man eine negative Dezimalzahl in eine Binärzahl um ?
Indem man den Betrag von 0 abzieht und nach der gewünschten Anzahl
Stellen abbricht:
1 | 00000000 |
2 | - 00101010 |
3 | -------- |
4 | 11010110 |
(Ergibt das 2er-Komplement, 0-x <=> ~x+1 (mod 2^N))
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.