Signed-Integer mit Vorzeichenbit?
Meine Aufgabe lautet, dass ich die Zahl 17286 in eine 16 bit signed integer Zahl umwandeln soll und die binäre Zahl dafür wäre 100001110000110. Diese besteht aus 15 Bits und nun würde ich normalweise eine 0 vorne ranhängen damit die 16 bit ausgelastet sind. Nun zu meiner Frage: Pack ich die 0 vorne wirklich nur zum ausfüllen oder ist diese 0 das Plus-Vorzeichen-Bit? Ich meine mal gelernt zu haben dass bei signed Variablen das erste bit also das most significant bit immer das Vorzeichen ist. Wäre es eine 1 vorne wenn ich -17286 umwandeln würde?
2 Antworten
Beides: Du musst auf 16 Bit auffüllen und das höchstwertige Bit ist das Vorzeichen-Bit.
Signed Integer ist aber in der Darstellung K2-Komplement, nicht Vorzeichen-Betrag. Das hat Auswirkungen auf die Umrechnung zu negativen Zahlen.
0b111111111111111 ist -1 und nicht -32767
Wenn das Vorzeichen-Bit negativ (also 1) ist, musst du entweder: Komplette Zahl in Dezimal umwandeln und 2^16-Zahl rechnen, oder jedes Bit negieren, dann 1 addieren und dann umwandeln.
Ich denke, eins subtrahieren und dann jedes Bit negieren, dann umwandeln sollte auf das gleiche Ergebnis kommen.
Die 0 ganz links ist das most-significant bit, auch bekannt als Vorzeichen--Bit.
Ist das most-significant Bit auf 1 gesetzt, musst du 1 abziehen und auf jedes Bit das bitweise Nicht anwenden, um den Betrag der negativen Zahl zu bekommen.