Zahlensysteme

11/11/2015 22:55 NRj™#1
Warum entspricht die signed binäre Zahl 10110010 -78 im Zehnersystem? Ich komme auf +178. Ich könnte mir höchstens vorstellen das Rechenzeichen in Minus zu ändern wegen signed.

Rechenweg: 1 * 2^1 + 1 * 2^4 + 1 * 2^5 + 1 * 2^7 = 2 + 16 + 32 + 128 = + 178

Unsigned binäre Werte kann ich ohne Probleme umrechnen. Was muss man also bei signed beachten?
11/11/2015 23:19 warfley#2
MSB = 1 bedeutet dass die zahl im 2er Komplement steht. Das heißt du musst es zu erst umrechnen mit not Zahl + 1 also aus 10110010 wird -(01001101+1) also -01001110

Das hat den hintergrund das mit dem 2er Komplement die Subtraktion genau so funktioniert wie die Addition und so keine 2 Algorithmen in die ALU implementiert werden müssen

PS: Das hat grundsätzlich erst mal nichts mit dem Zahlensystemen selbst zu tun, sondern ist einfach eine Technische Implementierung zur effektiven nutzung negativer zahlen. Das Binärsystem selbst (als mathematisches Darstellungskonzept) kennt genau die selben Verknüpfungen und Axiome wie alle anderen Systeme
11/11/2015 23:33 NRj™#3
Wie bist du jetzt auf die negative binärzahl gekommen? Kann das nicht ganz nachvollziehen.
11/11/2015 23:44 warfley#4
Ok ich erkläre es mal Schritt für Schritt:
Zunächst einmal wenn du einen Signed Integer hast überprüfst du das MSB
Code:
10110010
^
Da es sich um eine 1 handelt weist du die Zahl ist negativ und daher im 2er Komplement.
Das bedeutet du musst das in die normale Darstellung umrechnen und dann negieren. Die Umrechnung Besteht aus 2 Schritten:
1. Bitwise Not
Code:
10110010 
01001101
2. Plus 1
Code:
 01001101
+00000001
--------
01001110
Das negative dieser Zahl ist dein Wert:
Code:
-01001110 = -(2+4+8+64) = -78
11/11/2015 23:55 NRj™#5
Danke jetzt hab ich es verstanden! :)
11/12/2015 10:47 algernong#6
Du kannst es dir auch so vorstellen: Im Zweierkomplement rechnet man Modulo 2^(n+1) (n höchstes Bit Bits, bei 0 anfangen zu zählen). Das heißt, dass du nach Belieben Vielfaches von 2^(n+1) auf eine Zahl addieren / subtrahieren darfst, ohne dass sich der Wert verändert.

Also ist zum Beispiel, bei 8 Bit ZK: 178 = 178 - 256 = -78.

Interpretiert wird das dann eben so, dass man die Zahlen 0..(2^n)-1 als die ersten positiven Zahlen und 2^(n)..(2^(n+1))-1 als die ersten negativen Zahlen betrachtet.

Damit kommst du auch auf die Formel:
Quote:
ZK = z_n*2^n + ... + z_0 - 2^(n + 1) = -z_n * 2^n + ... + z_0