Zweiekomplement 32768

#1774663
Lesenswert?

Johann schrieb:
> Aha klingt logisch

:-)

Ich glaube nicht, das du das verstanden hast :-)

Lass uns mal auf 4 Bit Zahlen gehen, dann rechnet es sich leichter. Das 
Prinzip ist identisch bei allen Bitzahlen.

2-er Komplement bedeutet, dass es 1 Bit gibt, das höchstwertige, welches 
eine Aussage gestattet, ob die Zahl positiv oder negativ ist.
Bit == 0   -> Zahl ist positiv
Bit == 1   -> Zahl ist negativ

Um das jeweilige Negative einer Zahl zu erhalten wird die Vorschrift 
ausgeführt:
  Alle Bits umdrehen (aus 0 wird 1, aus 1 wird 0)
  und noch 1 addieren

die Zahl 0 zb hat mit 4 Bit (1 Signbit + 3 Nutzbits) das Bitmuster

    0000

das 2-er Komplement davon ist

    0000      Original
              alle Bits umgedreht         1111
              und noch 1 dazu             0000

0 ist also in Binärdarstellung sein eigenes 2-er Komplement

Was ist mit den restlichen, zunächst positiven, Zahlen?

    001      1
    010      2
    011      3
    100      4
    101      5
    110      6
    111      7

ihre 2-er Komplemente (und damit die jeweilige negative Zahl) lauten

    0001   1       ->   1111   -1
    0010   2       ->   1110   -2
    0011   3       ->   1101   -3
    0100   4       ->   1100   -4
    0101   5       ->   1011   -5
    0110   6       ->   1010   -6
    0111   7       ->   1001   -7

nun gibt es aber noch ein mögliches Bitmuster  1000
da das MSB 1 ist, handelt es sich um eine negative Zahl, welche?

(um von einer negativen Zahl zur entsprechenden positiven zu kommen, 
wendet man einfach wieder das 2-er Komplement an)

    1000    Original
            alle Bits umdrehen    0111
            und noch 1 dazu       1000

seltsam.
Beim erhaltenen Bitmuster handelt es sich um die Zahl die nach +7 kommen 
müsste. Das wäre eigentlich die +8. Allerdings ist das Ergebnis in 2-er 
Komplement-Form wieder eine negative Zahl.
Das liegt daran, das +8 mit nur 3 Bits nicht darstellbar ist.
Als -8 hingegen ist das darstellbar. Das Bitmuster für 1000 passt 
wunderbar genau in die Reihe der Bitmuster für negative Zahlen als die 
nächste Zahl nach -7.
1000 ist daher -8

In gewisser Weise ist das Analog zum 0-Fall. 0 ist, genauso wie -8 sein 
eigenes 2-er Komplement.

Der Zahlenbereich aller Zahlen, die in 2-er Komplementdarstellung mit 4 
Bits darstellbar ist, lautet daher -8 bis +7

Ja, der ist asymetrisch! In den negativen Zahlen gibt es eine Wert mehr! 
Dies deshalb weil 0 in 2-er Komplementdarstellung als positive Zahl 
gewertet wird. Wird das berücksichtigt: dann haben wir 8 Stück negative 
Zahlen und 8 Stück ( 0 plus 1 bis 7) positive Zahlen.
Gast #1775354
Lesenswert?

Karl heinz Buchegger schrieb:
> Ja, der ist asymetrisch! In den negativen Zahlen gibt es eine Wert mehr!

Hallo,

das ist ja schon von vornherein klar: für jede Zahlenlänge n gibt es 2^n 
mögliche Werte, also eine gerade Zahl. Ist eine davon 0, so können die 
übrigen nicht in 2 gleich grosse Gruppen eingeteilt werden.

Bei ternärer Darstellung wäre das anders, 3^4 = 81, da könnte man 0 und 
je 40 positive und negative Zahlen darstellen.

Gruss Reinhard
#1775816
Lesenswert?

Der Mathematiker rechnet auch nicht im Einerkomplement oder in 
sign/magnitude Darstellung. Meistens rechnet er garnicht, er weiss nur 
wie man es tut. Der Computer wiederum interessiert sich für Gruppen nur 
in der Benutzerverwaltung, weiss glücklicherweise nicht, dass er 
garnicht rechnen kann und tut es deshalb trotzdem.

Tatsächlich gab es noch in den 70ern unter den grossen Eisen welche, die 
im Einerkomplement arbeiteten und infolgedessen mit zwei Nullen zurecht 
kommen mussten.

Des Rätsels Lösung: Mathematisch existiert nach wie vor nur eine Null, 
aber diese hat 2 Darstellungen.
Persönliche Seite #1778724
Lesenswert?

Reinhard Kern schrieb:
> Rolf Magnus schrieb:
>> Die Annahme des OP war aber, daß zwei davon die 0 sind.
>
> so ganz unvorbereitet aus dem Bauch: eine Gruppe enthält genau ein
> neutrales Element, und wenn die n-bittigen Zahlen keine Gruppe wären
> könnte man nicht damit rechnen.

In dem Fall von +0 und -0 hat die 0 eben zwei Darstellungen. Die 
Darstellung muss ja nicht eindeutig sein, was allerdings zB beim Test 
auf Gleichheit zu berücksichtigen ist. Die 0 besteht also aus der Menge 
{-0, +0}.

Ähnliches hat man zB in Z mod n*Z. Wenn man sowas schreibt wie 0 = n 
(mod n) dann sind diese 0 und n  zwei Repräsentanten der gleichen 
Äquivalenzklasse, nämlich von nZ. die 1 (und ebende n+1 oder 1-n etc, 
wären Repräsentanten von nZ+1). Zumindest ist das die algebraische 
Sichtweise.

Übrigens kann man auch Rechenoperationen ausführen, wenn es keine Gruppe 
ist. Beispiel: Float-Arithmetik auf Rechnern. Das ist noch nichtmal ne 
Halbgruppe, weil idR (a*b)*c ≠ a*(b*c). Dennoch kann man darin rechnen, 
muss aber die Tücken und Ösen kennen und wissen wie man sie umschifft.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren