AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Rechenaufgabe

Ein Thema von TheCatcher · begonnen am 13. Jul 2006 · letzter Beitrag vom 17. Jul 2006
 
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.087 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Rechenaufgabe

  Alt 17. Jul 2006, 02:31
Zitat von himitsu:
PS: ABS macht intern nichts anderes

Code:
function abs(x: TYP): TYP;
  begin
    [b]if x < 0 then
      result := -x[/b]
    else
      result := x;
  end;
@himitsu:
so ganz stimmt das nicht.
bei mir wird z.B. a:=Abs(a); so umgesetzt

bei Integerwerten
Delphi-Quellcode:
mov eax,[adresse a]
cdq // wenn a negativ dann sind in edx alle Bits=1, sonst alle=0
xor eax,edx
sub eax,edx
mov [adresse a], eax
bei realwerten, z.B. extended
Delphi-Quellcode:
fld tbyte ptr [adresse a]
fabs // setzt das Vorzeichenbit = 0
fstp tbyte ptr [adresses a]
Tja, warum schreibe ich das?!
weil ich gerade gestern das vermeintliche Problem hatte, daß ABS einen negativen Integerwert nicht in einen positiven Wert umwandelte.
Wenn nämlich eine Variable des Typs Integer ihren kleinstmöglichen Wert hat, also -2147483648 oder $8000000 dann gibt es keine korrespondierende positive Zahl und Abs() verändert den Wert nicht, er bleibt also negativ.
Hat ein bischen gedauert, bis ich begriffen hatte wo mein Denkfehler lag.
Bei eingeschalteter Überlaufprüfung gibts dann übrigens eine Fehlermeldung....
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:51 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-2025 by Thomas Breitkreuz