-
Binärzahlensystem
Hallo, zusammen! 
Wir haben gestern in Informatik "Negative Zahlen im Binärsystem" durchgenommen. Ich sitze zwar direkt an der Tafel, verstehe das aber nicht.
Wir haben eine Zahl 5710 = 0011 10012 im Binärsystem.
Jetzt wollen wir die negative Zahl -57 herausfinden. Das ist (laut einem Skript aus der Schule) 1100 01112.
Jetzt verstehe ich nicht, wieso jetzt die 1100 01112 die -5710 im Dezimalsystem ist, wenn doch 1100 01112 eigentlich 19910 ist.
Hoffentlich ist das Problem verständlich.
-
Ich versteh' gerade nicht was die tiefergestellte "2" in den Zahlen zu suchen hat.
Man könnte sie auch unmöglich in einem herkömmlichen dualen Rechensystem verwenden.
Die 570.000.000.000 wäre im Binärsystem übrigens die 1000010010110110101001011100010000000000, und damit eine 40 Bit-Zahl.
EDIT: Ok, da ich jetzt auch weis was mit der 10 gemeint war...vergiss mein Ergebnis.
Geändert von Langschlaefer (02.09.2008 um 15:41 Uhr)
-
 Zitat von Langschlaefer
Ich versteh' gerade nicht was die tiefergestellte "2" in den Zahlen zu suchen hat.
Man könnte sie auch unmöglich in einem herkömmlichen dualen Rechensystem verwenden.
die 2 sagt, dass es sich um eine binäre zahl handeln
-
 Zitat von Mielas
die 2 sagt, dass es sich um eine binäre zahl handeln
Achso...Oh Gott, das bin ich garnichtmehr gewöhnt. XD
-
 Zitat von HeiligerMadjai
Jetzt wollen wir die negative Zahl -57 herausfinden. Das ist (laut einem Skript aus der Schule) 1100 0111 2.
Jetzt verstehe ich nicht, wieso jetzt die 1100 0111 2 die -57 10 im Dezimalsystem ist, wenn doch 1100 0111 2 eigentlich 199 10 ist.
Hoffentlich ist das Problem verständlich. 
Vielleicht lasst ihr den Zahlenbereich der Variable überlaufen, sodass der Wert in den negativen Bereich überspringt, und dann bis -57 'raufgedrückt' wird.
Von welchem Datentyp ist denn die Variable? int, double,...
There are no rules, there's only passion
My passion gives me energy
My dreams guide me to my future
My determination will break my chains
My thoughts will set me free
-
 Zitat von Siddhartha
Vielleicht lasst ihr den Zahlenbereich der Variable überlaufen, sodass der Wert in den negativen Bereich überspringt, und dann bis -57 'raufgedrückt' wird.
Von welchem Datentyp ist denn die Variable? int, double,...
Puhh, keine Ahnung. Davon steht in dem Skript nichts drin. 
Da steht nur sowas von einer 4-Bit-Darstellung. Da könnte dann die 10002 +8 und -8 bedeuten.
Aber von einem Datentyp seh ich da nichts.
-
So...und mit dem wissen was diesmal gemeint is':
Dieses Ergebnis der negativen Zahl resultiert darauß, dass man negative Zahlen mit einem Vorzeichen darstellen muss, dafür hält die "1" her.
(Achtung! Man muss wissen ob mit negativen oder positiven Zahlen gearbeitet wird da beide eine "1" als erstes Zeichen besitzen können)
Natürlich kann die "-1" nun keine "0001" mehr sein, also nahm man für negative Zahlen auch eine ganz andere Ziffernfolge.
Bei 3-Bit-Zahlen sieht das dan bspw. folgendermaßen aus:
[Bild: 05.jpg]
Bevor man sich allerdings die Mühe macht und die Anordnung der Ziffern welche die negativen Zahlen darstellen auswendig lernt, sollte man negative Zahlen lieber über das Zweierkomplement berechnen.
-
Also wir haben es so gerlernt, dass die erste Ziffer das Vorzeichen ist. Man konnte so auch addieren, subtrahieren, multiplizieren und dividieren ganze ohne Probleme.
-
Es gibt 10 Sorten von Menschen: Solche, die das Binärsystem verstehen, und solche, die es nicht tun.
"Wer von der Quantentheorie nicht schockiert ist, versteht sie nicht." Niels Bohr, 1927
"Niemand versteht die Quantentheorie." Richard Feynman, 1967
-
Ich glaube, dass ich die Umwandlung einigermaßen verstanden habe.
Prüfung: (Bitte posten, falls falsch!)
Wir haben eine positive Zahl 31. Wir wollen die negative Zahl -31 herausfinden.
3110 = 0001 11112 -> Negation -3110 = 1110 00002 -> Mit 110 addieren
+ 0000 00012 = 1110 00012
-128+64+32+1 = -3110
So, und wie kann man jetzt die positive und die negative Zahl auseinanderhalten? Es kann ja auch sein, dass 1110 00012 = 25510 ist.
Aber bei einer 8-Bit-Binärzahl kann man nur Zahlen von -128 bin +127 darstellen, also muss dann die Zahl 1110 00012 negativ sein, weil sie zu groß für
8-Bit ist.
Kann man positive und negative Zahlen dadurch auseinander halten, indem man die Binärzahl umwandelt und guckt, ob die umgewandelte Zahl im Bereich zwischen -128 und +127 liegt (bei 8-Bit)?
Wenn sie drüber oder drunter liegt, ist sie negativ; wenn in dem Bereich, dann ist die positiv?
Ist bei mir jetzt alles im grünen Bereich?
-
Wie Langschlaefer schon sagte kann man die negative Binärzahl durch das Zweierkomplement berechnen.
Das geht einfach durch "kippen und eins dazu", heißt in der Zahl werden alle 1 durch 0, und alle 0 durch 1 ersetzt und das Vorzeichen auch auf 1 gesetzt.
In diesem Beispiel folgendermaßen:
0011 1001 = 1|100 0110 gekippt, + 1 = 1|100 0111.
-
 Zitat von HeiligerMadjai
Ich glaube, dass ich die Umwandlung einigermaßen verstanden habe.
Prüfung: (Bitte posten, falls falsch!)
Wir haben eine positive Zahl 31. Wir wollen die negative Zahl -31 herausfinden.
3110 = 0001 11112 -> Negation -3110 = 1110 00002 -> Mit 110 addieren
+ 0000 00012 = 1110 00012
-128+64+32+1 = -3110
Rüschdüttsch
So, und wie kann man jetzt die positive und die negative Zahl auseinanderhalten? Es kann ja auch sein, dass 1110 00012 = 25510 ist.
Aber bei einer 8-Bit-Binärzahl kann man nur Zahlen von -128 bin +127 darstellen, also muss dann die Zahl 1110 00012 negativ sein, weil sie zu groß für
8-Bit ist.
Grundsätzlich kann man sie nicht auseinanderhalten, deshalb muss man vorher wissen mit wievielbitigen Zahlen man rechnet und ob negative dabei sind.
Sind negative Zahlen dabei, geht man grundsätzlich bei Zahlen, deren erstes Bit eine "1" darstellt von einer negativen Zahl aus...man benötigt dann eben ein Bit mehr um auf positive durch eine "0" vorne dran aufmerksam zu machen.
Kann man positive und negative Zahlen dadurch auseinander halten, indem man die Binärzahl umwandelt und guckt, ob die umgewandelte Zahl im Bereich zwischen -128 und +127 liegt (bei 8-Bit)?
Wenn sie drüber oder drunter liegt, ist sie negativ; wenn in dem Bereich, dann ist die positiv?
Wäre mir neu...
-
also aus der Informatik kenne ich das so: negative zahlen werden von 0 ( abgezogen. Sprich wenn man ins negative geht, nimmt man die mit dem Bitsystem größte Zahl als -1 an und es wird ein Minusflag gesetzt.
Bei 4 Bit: 0000 - 1 = 1111
bei 8 Bit: 0000 0000 -1 = 1111 1111
-2:
Bei 4 Bit: 0000 - 2 = 1110
bei 8 Bit: 0000 0000 -2 = 1111 1110
Jetzt verstehe ich nicht, wieso jetzt die 1100 0111 die -57 im Dezimalsystem ist, wenn doch 1100 0111 eigentlich 199 ist.
199 + 57 = 256 = 1 0000 0000, das ist quasi Null (0000 0000), da 256 mit einem 8 Bitsystem nicht mehr darstellbar ist.
255 ist dabei die größtmögliche mit 8 Bit darzustellende Zahl, diese ist quasi die minus 1
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|