Mathe zweierkomplement?

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.

dunya18 
Fragesteller
 13.10.2021, 11:48

Also quasi wenn ich 45 in binär Zahl umwandeln kommt 101101 und dann unten rechts eine kleine 2 hin oder ?

1
Destranix  13.10.2021, 11:57
@dunya18

Ja. Die kleine 2 soll andeuten, dass die Zahl eine Binärzahl ist.

0

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.

dunya18 
Fragesteller
 13.10.2021, 11:35

Dankeschön

0