AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integer Theorie

Ein Thema von nailor · begonnen am 2. Okt 2003 · letzter Beitrag vom 16. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#1

Integer Theorie

  Alt 2. Okt 2003, 14:48
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
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Integer Theorie

  Alt 2. Okt 2003, 14:56
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.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Integer Theorie

  Alt 2. Okt 2003, 15:06
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: Integer Theorie

  Alt 2. Okt 2003, 15:29
Moin Nailor...

Zitat von sakura:
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.
Ist ja auch logisch... 32 Bit währen ja DEZ_4294967296 also BIN_100000000000000000000000000000000.

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.

[EDIT] Da oben stehts ja... 1 ist positiv... Wer lesen kann ist klar im Vorteil [/EDIT]

bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: Integer Theorie

  Alt 2. Okt 2003, 15:37
Habe soeben einen Bug in Calc.exe gefunden.

Versucht mal -5 dez nach Binär umzuwandeln.

5 ergibt 101, passt
-5 ergibt 11111111111111111111111111111111111111111111111111 11111111111011

Daniel
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Integer Theorie

  Alt 2. Okt 2003, 15:37
IntToHEX(-2147483648) = $80000000, somit Bit 31 = 1 wenn negative Zahl.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Integer Theorie

  Alt 2. Okt 2003, 15:41
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

Nicht wirklich, daß ist die 64-Bit Darstellung, da ist halt "erst" Bit 63 für die negativ-Maskierung da

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Integer Theorie

  Alt 2. Okt 2003, 15:43
Hallo,
Zitat von Sanchez0815:
Habe soeben einen Bug in Calc.exe gefunden.
zu früh gefreut. Das ist kein Bug negative Zahlen werden im Zweier Komplement dargestellt.
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.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Integer Theorie

  Alt 2. Okt 2003, 15:43
Zitat:
Habe soeben einen Bug in Calc.exe gefunden.

Versucht mal -5 dez nach Binär umzuwandeln.

5 ergibt 101, passt
-5 ergibt 11111111111111111111111111111111111111111111111111 11111111111011
Das ist kein Bug, sondern die Komplementärdarstellung einer negative Zahl die im Bereich -2^63 <= 0 < +2^63 liegt.

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
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#10

Re: Integer Theorie

  Alt 2. Okt 2003, 15:45
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???
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.
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