Wann weiß ich ob ich eine Zahl im Binärsystem negativ interpretieren muss?
Guten Tach,
wenn ich eine gegebene Binärzahl (10) habe, wie weiß ich dann, ob es sich dabei um eine negative Darstellung (auf Grund der führenden 1) handelt und ich das Komplement bilden muss, oder ob es eine vorzeichenlose Darstellung ist, trotz der führenden 1. Dann wäre (10) im Zehnersystem ja 2, wenn man zB das Einer-Komplement bildet, -1. Dementsprechend muss man dem Rechner doch immer vorher sagen, wie er die Zahl interpretieren muss - stimmt das so?
Danke im Voraus!
2 Antworten
Das kann man überhaupt nicht feststellen, das muss sich aus dem Zusammenhang ergeben. Ein Byte aus einer Codiertabelle ist ein verschlüsseltes Zeichen, ein Wert, das man zu einer Zahl addieren muss, ist ebenfalls eine Zahl und kann demnach auch negativ sein.
Der Rechner weiß das auch nicht, der weiß auch nicht, ob ein Speichereintrag ein Befehl oder ein Text ist. Muss er auch nicht wissen. Denn alles, was er von der Programmsteuerung bekommt, interpretiert er als Befehl, was er von der Datensteuerung bekommt, sind Daten. Welcher Art die Daten sind, erkennt er daran, was er mit den Daten machen muss. Und wehe, wenn er was Falsches bekommt. Das führt zu einem Programmabsturz wegen eines Ausnahmezustandes.
Das war übrigens auch mein erstes Verständnisproblem, das ich in den 60-ger Jahren hatte, als ich in der EDV begonnen habe. Informatik gab es damals nicht. Ich habe Maschinen- und Kraftfahrzeugbau studiert.
Dementsprechend muss man dem Rechner doch immer vorher sagen, wie er die Zahl interpretieren muss - stimmt das so?
Genau das.
Nehmen wir als Beispiel mal ein wenig C++:
int foo = -123;
std::cout << foo << std::endl;
//Ausgabe: -123
unsigned int bar = -123;
std::cout << bar << std::endl;
//Ausgabe: 4294967173
Sowohl foo als auch bar enthalten beide den Wert 11111111111111111111111110000101.
Allerdings wird dieser durch das kleine Wörtchen unsigned im zweiten Fall anders behandelt als im ersten.
P.S.: Im Speicher ist 11111111111111111111111110000101 nichts weiter als eine Bitfolge. Ob diese nun eine 32 Bit große Zahl, 2 je 16 Bit große Zahlen, 4 Textzeichen oder was auch immer darstellt lässt sich nur anhand der blanken Daten bestenfalls raten.