www.mikrocontroller.net

Forum: PC-Programmierung Zweiekomplement 32768


Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist eigentlich die Zahl 32768 im Zweierkomplement die -0.
Ab >32768 fangen ja erst die negativen an.
<32768 sind die positiven.
Also muss 32768 ->0 sein

Autor: µder Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann schrieb:
> ist eigentlich die Zahl 32768 im Zweierkomplement die -0.

Nein. Eine -0 gibt es im Zweierkomplement nicht.

> Ab >32768 fangen ja erst die negativen an.

Nein, sie fangen ab 32768 an. Im Zweierkomplement entspricht das der 
-32768.

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha klingt logisch

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha,danke schön erklärt jetzt hab ich verstanden

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann schrieb:

> ist eigentlich die Zahl 32768 im Zweierkomplement die -0.

Nur in sign/magnitude Darstellung. Die ist im Fliesskommaformat sehr 
gebräuchlich, andernorts aber ausgestorben. Ansonsten gibt es eine -0 
noch im Einerkomplement, aber das ist noch toter.

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Ansonsten gibt es eine -0
> noch im Einerkomplement, aber das ist noch toter.

Als von der Hardware genutzte Darstellung vielleicht, benutzt wird es 
aber Tag für Tag sehr häufig. Bei der Berechnung von IP-, TCP und 
UDP-Prüfsummen wird Einerkomplement-Arithmetik verwendet.

Andreas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiss ich, aber hier ging es nicht um die Arithmetik, sondern um die 
Zahlendarstellung. Und da ist das Einerkomplement deutlich toter als 
sign/magnitude. Selbst Seymor Cray war auf seine alten Tage davon 
abgekommen.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard Kern schrieb:
> Ist eine davon 0, so können die übrigen nicht in 2 gleich grosse Gruppen
> eingeteilt werden.

Die Annahme des OP war aber, daß zwei davon die 0 sind.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Gruss Reinhard

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.