Mathe zweierkomplement?
Hellooo Leute… da ich mich schon Stunden lang damit herum schlage und keiner eine Ahnung hat wollt euch mal jetzt hier nach fragen…
Meine Aufgabe lautet :
Wandeln Sie die Dezimalzahlen 4510 und −4510 ( die 10 ist unten geschrieben und klein aber ich habe keine Ahnung wie man es hier machen kann ) in Binärzahlen im 8-Bit Zweierkomplement um. Kennzeichnen Sie alle Zahlen mit einem Index. Für Zweierkomplementzahlen verwenden Sie bitte den Index 2c.
kann mir einer sagen wie man dabei vor gehen kann wenn sich einer damit auskennt ?
2 Antworten
Ersteinmal wandelst du die Zahlen ohne Beachtung des Vorzeichens in eine Binärzahl um.
Dafür wendest du sukzessive den Zweierlogarithmus, rundest ab und notierst das Ergebnis, dann teilst du die Zahl durch 2 hoch das Ergebnis und notierst den Rest.
Dann setzt du das Bit, am Index, den dir der Zweierlogarithmus lieferte, auf 1.
Das tust du so lange, bis du als Rest 0 erhälst.
Als Formel:
0.) Wenn x 0 ist abbrechen.
1.) index = floor(log_2(x));
2.) x = x % pow(2, index);
3.) Bit an Position index auf 1 setzen
4.) Gehe zu 0.)
Die Bit-Zahl, die du jetzt erhälst, ist eine positive Zahl. Nur, wenn eine 0 vorne dransteht ist das bei positiven zahlen im Zweierkomplement. Entsprechend ergänzt du die 0 sollte sie fehlen. Willst du dieselbe Zahl mit negativem Vorzeichen, dann suchst du dir die 1 am weitesten rechts (niederwertigst) und invertierst alle Bits die weiter links (höherwertig) liegen. (Für jedes Bit dieses auf 1 setzen sollte es 0 sein udn auf 0 setzen sollte es 1 sein). Beachte: Wenn du das bei negativen zahlen oder der 0 tust, dann geht es schief.
Zuerst muss du die Zahlen ins normale Binärsystem umwandeln. Dann invertierst du alle Zahlen, also 0 wird zu 1 und 1 wird zu 0. Dann addierst du ne eins. Wenn du ne negative Zahl hast, dann schreibst du noch zusätzlich ne eins davor.
Also quasi wenn ich 45 in binär Zahl umwandeln kommt 101101 und dann unten rechts eine kleine 2 hin oder ?