AGB  ·  Datenschutz  ·  Impressum  







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

Function für Vorzeichen?

Ein Thema von Cöster · begonnen am 8. Sep 2006 · letzter Beitrag vom 10. Sep 2006
Antwort Antwort
Seite 4 von 6   « Erste     234 56      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#31

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 20:57
Zitat von Hawkeye219:
Die Unit Math wurde/wird ständig erweitert, die Sign-Funktionen wurden in Delphi 6 hinzugefügt.
OK, dann halt nicht .... mir war nur o, als gab's dat in meinem D4 auch schon
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#32

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:09
Zitat von Cöster:
Wie kann man das denn ohne if (und ohne Assembler) schreiben?
Delphi-Quellcode:
function Sign(i: Integer): Integer;
begin
  Result := (0 - (i shr 31)) or 1;
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#33

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:24
Hallo Cöster!

Zitat:
Natürlich, ich bekomme nicht - oder +, aber -1 oder +1. Das ist auch alles, was ich will.
Manuel wollte dich darauf aufmerksam machen, daß die gängigen Vorzeichen-Funktionen für die Zahl 0 den Wert 0 als "Vorzeichen" liefern. Deine Funktion liefert in diesem Fall den Wert 1, betrachtet die Null also als positive Zahl.

Zitat:
Wie kann man das denn ohne if (und ohne Assembler) schreiben?
Ich hatte im Beitrag #15 eine mögliche Lösung vorgestellt (für Integer- und Double-Werte), weil ich auch von einer zweiwertigen Funktion ausging. Obwohl Vergleichsoperatoren verwendet werden, enthält der erzeugte Assemblercode keine Sprungbefehle.

@Dax: so geht's

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#34

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:25
Sondern? Natürlich, ich bekomme nicht - oder +, aber -1 oder +1. Das ist auch alles, was ich will. Ich brauch den Befehl "hänge an a das Vorzeichen von b dran" und dafür schreib ich dann
a := sign(b)*a;

Wie lässt sich das if denn in der Funktion verhindern (ohne Assembler-Code)? Mehr als
result := value/abs(value)
fällt mir nicht ein. Aber das soll ja noch langsamer sein, als ein if.
Wie kann man das denn ohne if (und ohne Assembler) schreiben? [/quote]

Du bekommst bei einer 0 eine +1 raus. Eine 0 hat aber kein Vorzeichen, folgerichtig muss also bei einer 0 eine 0 rauskommen.

Das geht natürlich dann nicht ohne if, aber mit einem statt 2.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:50
Moin Zusammen,

ist ja schön, dass ihr so viele Vorschläge macht, wie man das bei integer-Werten machen kann, Cöster sucht das aber für Real
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 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#36

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:53
Er kann ihn ja vorher truncaten.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:57
Moin Manuel,

das dürfte nicht viel helfen, wenn der Wert zwischen -1 und +1 liegt.
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
Dax
(Gast)

n/a Beiträge
 
#38

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 21:57
Zitat von Christian Seehase:
Moin Zusammen,

ist ja schön, dass ihr so viele Vorschläge macht, wie man das bei integer-Werten machen kann, Cöster sucht das aber für Real
Nuuun *grübel*

Delphi-Quellcode:
function Sign(e: Extended): Integer;
begin
  Result := (0 - (e shr 79)) or 1;
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#39

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 22:06
Dax, diesmal muß ich dich enttäuschen - SHR erwartet einen ganzzahligen Operanden.

Zitat von Christian Seehase:
Cöster sucht das aber für Real
Zitat von Hawkeye219:
Ich hatte im Beitrag #15 eine mögliche Lösung vorgestellt (für Integer- und Double-Werte)
Gruß Hawkeye
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#40

Re: Function für Vorzeichen?

  Alt 8. Sep 2006, 22:11
Zitat von Hawkeye219:
Dax, diesmal muß ich dich enttäuschen - SHR erwartet einen ganzzahligen Operanden.
Oops, sowas hab ich mir schon gedacht Da hab ich wohl schneller getippt als gedacht.

Gings denn so?

Delphi-Quellcode:
function Sign(e: Extended): Integer;
type
  PExtendedRec = ^TExtendedRec;
  TExtendedRec = record
    case Integer of
      0: (e: Extended);
      1: (a: Array[0..9] of Byte);
  end;
begin
  Result := (0 - (PExtendedRec(@e)^.a[0] shr 7)) or 1;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


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 14:38 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