Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Integer Theorie (https://www.delphipraxis.net/9727-integer-theorie.html)

sakura 2. Okt 2003 15:49

Re: Integer Theorie
 
Das liegt einfach daran, das der Windows-Taschenrechner im Binärmode unabhängig von Vorzeichen arbeitet. Kurz, ja man kann es als Bug sehen, andererseits, wer will schon mit negativen Zahlen im Binärmode arbeiten :mrgreen:

...:cat:...

negaH 2. Okt 2003 15:51

Re: Integer Theorie
 
Zitat:

Rechnen kann ers aber nicht in beide Richtungen

Wenn ich jetzt
5 dez nach binär umwandle
invertiere
wieder nach dezimal
bekomme ich 18446744073709551611

Sollte da nicht -5 rauskommen???
Das ist korrekt, der Rechner macht einen "Fehler" ? oder ist es so gewollt ?

Wäre schon logisch wenn Bill Gates 6 Euro auf'm Konto hat. Dann hebt er 11 Euro ab und hat 5 Euro Schulden. Nun ist Billy sehr trickreich, geht zu Bank, öffnet den Schlepptop und zerrt den Rechner raus. Er rechnet der Bank vor das 5 Euro Schulden, also -5 in Binär umgewandelt, dann zurück nach Dezimal ein Guthaben von 18446744073709551611 Euro ergibt !!

Gruß Hagen

Luckie 2. Okt 2003 15:56

Re: Integer Theorie
 
Hat schon jemand den USB-Anschluß an einem Geldautomaten gefunden? :gruebel:

Christian Seehase 2. Okt 2003 16:04

Re: Integer Theorie
 
Moin Luckie,

aber denk dran: Die laufen mit OS/2. ;-)

Luckie 2. Okt 2003 16:07

Re: Integer Theorie
 
Stimmt, nach dem ich mal abgehoben hatte, hat sich mir eine BlueScreen präsentieret. :mrgreen:

(PS: Jetzt wird es offtopic.)

Tonic1024 6. Okt 2003 08:32

Re: Integer Theorie
 
Moin...

Zitat:

Zitat von Sanchez0815
Habe soeben einen Bug in Calc.exe gefunden.

Versucht mal -5 dez nach Binär umzuwandeln.

5 ergibt 101, passt
-5 ergibt 11111111111111111111111111111111111111111111111111 11111111111011

Gut, dass es sich nicht um einen Bug handelt hatten wir ja schon geklährt. Ich will nur noch einmal etwas dazu sagen, weil ich finde, dass alles was hier gesagt wurde zwar technisch richtig aber immernoch recht viel fachchinesisch ist.

Es stimmt schon, was Hagen sagte. Es gibt kein +0 und kein -0. Man kann es sich nur so schön merken mit der Null... Nennen wir es eine Eselsbrücke.

Also:
11111111111111111111111111111111111111111111111111 11111111111011 ist eine negative Zahl - zu erkennen an der 1 im MSB (Most significant Bit - also das erste von links). Wenn man die Zahl invertiert erhält man folgendes:
00000000000000000000000000000000000000000000000000 00000000000100 also DEZ_4. da wir aber noch für die Nulldifferenz "-0"(auch wenns sie eigentlich nicht gibt) einen Wert abziehen müssen, wird aus +4 dann -5.

Dieser Weg ist wie gesagt eine Elselsbrücke, aber funktioniert immer... und geht fast schneller als mit calc.exe :lol:

bis denne...

Blechwolf 6. Okt 2003 10:37

Re: Integer Theorie
 
Salut,

um auch hier nochmal meinen Senf dazu zugeben.
Wenn ich da richtig informiert bin, so hängt es auch vom Prozessor ab, welches Bit jetzt das Vorzeichen bestimmt. Denn bei den Suns werden die Binärzahlen nämlich nicht wie auf den Windows-Rechner mit dem kleinsten (also 2^0) links sondern mit dem kleinsten Bit Rechts dargestellt.
Insofern ist die Zahl 100 auf einem Win-Rechner = 4, auf einer Sun-Maschine entspricht das aber der 1.
Aber um auf das Vorzeichen zurück zu kommen. Die Aussage mit dem MSB war da schon richtig und allgemein gültig. Nur alles was danach kommt, nämlich mit dem MSb ganz links war eben typisch Windo*s...
Aber wer programmiert schon Delphi auf ner Sun... ;o)

Grüße

Blechwolf

negaH 16. Okt 2003 14:04

Re: Integer Theorie
 
Zitat:

Wenn ich da richtig informiert bin, so hängt es auch vom Prozessor ab, welches Bit jetzt das Vorzeichen bestimmt. Denn bei den Suns werden die Binärzahlen nämlich nicht wie auf den Windows-Rechner mit dem kleinsten (also 2^0) links sondern mit dem kleinsten Bit Rechts dargestellt.
Diese Annahme ist absolut falsch. Ein 32Bit Wert in einem 32Bit Register wird auf jeder CPU in Big Endian gespeichert. Erst wenn diese Register in den Speicher verlagert werden kommt es zur "Endian Umwandlung". Dabei wird im eigentliche Sinne überhaupt nicht konvertiert sondern die Art und Weise wie die Register in welcher Reihenfolge auf die Datenleitungen gelegt werden entscheidet dies.
Das Signum Bit ist immer MSB. Alles andere wäre rechentechnisch idiotisch.

Zitat:

Insofern ist die Zahl 100 auf einem Win-Rechner = 4, auf einer Sun-Maschine entspricht das aber der 1.
Also das solltest du mal genauer erklären !

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz