Archiv verlassen und diese Seite im Standarddesign anzeigen : Vorzeichen bei float
Hallo.
Ich muss einen Weg finden um bei einer float Zahl das Vorzeichen von + in - zu ändern.
Habe bereits verucht per |-Operator dass 1.Bit-Links(welches ja bekanntlich das Vorzeichenbit ist) zu ändern. Bekomme jedoch immer die Meldung:
| Ungültig, da der linke Operand vom Typ 'float' ist
Was muss ich machen ?
Monger
2009-07-12, 14:53:52
Wtf? Von welcher Sprache reden wir hier?
Schonmal * - 1 ausprobiert?
redfalcon
2009-07-12, 14:54:40
In welcher Programmiersprache denn?
Ansonsten einfach *(-1)...
Edit: Zu langsam...
Neomi
2009-07-12, 14:56:42
Wenn negative Zahlen negativ bleiben sollen (was beim bisherigen Vorschlag nicht so ist), dann versuch es einfach (Beispiel gilt für C/C++) mit -fabsf(x).
Die Sprache ist C++
Sorry, war gerade nicht Anwesend.
Danke !
Das mit *-1 hat funktioniert.
Neomi
2009-07-12, 17:44:05
Wozu eine Multiplikation, wenn es auch ohne geht? Wenn f deine Zahl ist und du das Vorzeichen ändern willst, schreib einfach -f. Sei dir aber bewußt, daß die Lösung (genau wie die mit der Multiplikation) nicht nur, wie von dir gefordert, das Vorzeichen von + in - ändert, sondern ebenfalls von - in +.
Eben. Die meisten Instruction-Sets haben eine "Negate"-Anweisung für sowas.
Eine Multiplikation ist sehr viel kostspieliger.
Flyinglosi
2009-07-12, 18:57:45
ne multiplikation mit -1 erkennt doch eh jeder halbigs brauchbare compiler und ersetzt das ganze durch ne negation. ist also völlig egal was man nun schreibt.
Da wäre ich mir bei Floating-Point ehrlich gesagt nicht so sicher.
Edit: Jepp, zumindest Visual C++ erzeugt tatsächlich auch ein Mul bei voller Optimierung.
Danke !
Das mit *-1 hat funktioniert.
rofl
Edit: Jepp, zumindest Visual C++ erzeugt tatsächlich auch ein Mul bei voller Optimierung.
Erzeugt es das Mul weil eine Negation eine andere Semantik hat oder weil die Optimierungsengine zu schlecht ist? :wink:
Ich habe ja nicht behauptet, dass es eine andere Semantik hat ;)
Nur sind die Optimierer eher schlecht bei sowas, vor allem weil man bei Float viel mehr beachten muss als bei Int.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.