PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vorzeichen bei float


Gast
2009-07-12, 14:48:06
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).

Gast
2009-07-12, 15:51:04
Die Sprache ist C++

Sorry, war gerade nicht Anwesend.

Gast
2009-07-12, 16:02:43
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 +.

Coda
2009-07-12, 17:48:52
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.

Coda
2009-07-12, 19:08:57
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.

Gast
2009-07-12, 19:57:27
Danke !
Das mit *-1 hat funktioniert.
rofl

pest
2009-07-12, 20:49:34
atomrofl :wink:

Trap
2009-07-12, 20:55:05
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:

Coda
2009-07-12, 21:31:03
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.