![]() |
Integer Theorie
Hi!
Ich habe eine Frage dazu, wie Delphi Intgers speichert. Es sind ja 32 bits. Ich will jetzt irgendwoher wissen, wie das Funktioniert. Arbeitet Delphi mit Offset oder mit Flags, um negative Zahlen darzustellen. Welche Bitmuster entsprechen -1, 0, 1, -2147483648, 2147483647??? Link würde reichen, oder Ihr |
Re: Integer Theorie
Delphi verlässt sich da ganz auf die Prozessorstruktur. Dieser nutzt das höchste Bit (31) für das Vorzeichen. Die Bits 00-30 sind für den Wert.
...:cat:... |
Re: Integer Theorie
Moin Nailor,
wenn Du die Bitmuster eines Integers haben willst kannst Du Dir das mit Windows Bordmitteln anschauen: Der Rechner (CALC.EXE) kann auch auf Binärdarstellung umgestellt werden. Das Vorzeichen wird immer durch das höchst Bit angegeben. Ist das gesetzt, wird die Zahl als negativ angesehen. Das ist aber Konvention für Integer. Bei Cardinal wird dieses Bit als "ganz normales" Bit angesehen, da Cardinals ja nur 0 oder positiv sind. |
Re: Integer Theorie
Moin Nailor...
Zitat:
Wenn nun, wie sakura sagt, nur 31 Bit Werte enthalten ist DEZ_2147483648 - was ja auch hinkommt, da die DEZ_0 ein positiver (?!?) Wert ist und IntMax demnach DEZ_2147483647. damit bleibt für die negativen Zahlen ein Wert mehr übrig (weil es -0 (also minus Null) nun mal nicht gibt) also DEZ_-2147483648. Das hasst du ja auch schon geschrieben und dir damit deine frage eigentlich schon selbst beantwortet. 8) Dummerweise ist mir entfallen ob die 1 oder die 0 im MSB (also Bit 31) für positiv steht... sonst könnt ich dir auch den Binärwert sagen. :oops: [EDIT] Da oben stehts ja... 1 ist positiv... Wer lesen kann ist klar im Vorteil :wall: [/EDIT] bis denne... |
Re: Integer Theorie
Habe soeben einen Bug in Calc.exe gefunden.
Versucht mal -5 dez nach Binär umzuwandeln. 5 ergibt 101, passt -5 ergibt 11111111111111111111111111111111111111111111111111 11111111111011 :bounce2: |
Re: Integer Theorie
IntToHEX(-2147483648) = $80000000, somit Bit 31 = 1 wenn negative Zahl.
Gruß Hagen |
Re: Integer Theorie
Zitat:
...:cat:... |
Re: Integer Theorie
Hallo,
Zitat:
Ob es jetzt das Zweier Komplement +1 o. das Zweier Komplement -1 ist habe ich vergessen (zu lange her) Durch die Darstellung im Zweier Komplement läßt sich eine Subtraktion als Addition durch führen. |
Re: Integer Theorie
Zitat:
Durch diese Darstellung muß die CPU das Vorzeichen nicht extra berechnen. Zb. -5 + +6 = +1 $FFFFFFFB = -5 + $00000006 = +6 = $00000001 = +1 Somit ist die Begründung, warum im negative Bereich eine Zahl mehr dargestellt werden kann, einfach weil nur dadurch die Rechnungen mit Komplementären Zahlen möglich ist. Es hat also nichts damit zu tun das es kein +0 oder -0 geben kann. Gruß hagen |
Re: Integer Theorie
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??? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz