Vorzeichen ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vorzeichen ändern

    Hallo,

    ich ermittle eine Variable und möchte bei dieser das Vorzeichen ändern. Wie mache ich dies?

    Danke für die Hilfe


    Stefan

    Zuletzt geändert von ohm; 20.06.2002, 15:40.
    ----------
    www.cassikov.de

  • #2
    PHP-Code:
    $zahl *= -1
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

    Kommentar


    • #3
      $zahl *= -1;
      oder $zahl = -$zahl
      oder $zahl -=($zahl)<<1
      oder (nur für Integer: ) $zahl++ = $zahl ^~0;

      zur letzten Möglichkeit:
      Bei einer Integerzahl wird das Vorzeichen im höchstwertigen Bit gespeichert: 0 für + und 1 für -
      So ist bei einem 16-Bit-Integer die 0 = 0x0000
      Für -1 zieht man eins ab, dabei gibt es einen Unterlauf -> 0xffff
      und den negativen Wert erhält man eben, indem man zum Komplement (alle Bits umgedreht) einen hinzuzählt.
      Beispiel minus null: (0x0000 ^ ~0) = 0xffff ... 0xffff+1 = 0x0000 = 0.

      Demnächst in dieser Reihe: Multiplikation im Dualsystem
      (oder ist euch die schriftliche Division lieber?)
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Hmmnnn ... das ist doch zumindest mal eine ausführliche Antwort ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          ich glaube, die Division wäre schöner!

          als weitere anregung:
          -Subtraktion durch Addition
          -Division durch Addition



          gruss

          Kommentar


          • #6
            warum so kompliziert?

            Liegt zwar ein bisschen zurück und der Verfasser ist schon lange nicht mehr online,
            aber ich verstehe nicht ganz zu was das ^ und die 0 gebraucht wird
            was spricht den gegen: $zahl++ = ~$zahl; ?

            cu Zen
            Zitat von Titus Beitrag anzeigen
            oder (nur für Integer: ) $zahl++ = $zahl ^~0;


            zur letzten Möglichkeit:
            Bei einer Integerzahl wird das Vorzeichen im höchstwertigen Bit gespeichert: 0 für + und 1 für -
            So ist bei einem 16-Bit-Integer die 0 = 0x0000
            Für -1 zieht man eins ab, dabei gibt es einen Unterlauf -> 0xffff
            und den negativen Wert erhält man eben, indem man zum Komplement (alle Bits umgedreht) einen hinzuzählt.
            Beispiel minus null: (0x0000 ^ ~0) = 0xffff ... 0xffff+1 = 0x0000 = 0.

            Demnächst in dieser Reihe: Multiplikation im Dualsystem
            (oder ist euch die schriftliche Division lieber?)

            Kommentar


            • #7
              Zitat von ZENeca Beitrag anzeigen
              Liegt zwar ein bisschen zurück und der Verfasser ist schon lange nicht mehr online, ...
              Nicht schön, weil:
              [0] Störung der Totenruhe.
              [1] TOFU

              Zum Glück ist das Thema ein klein wenig interessant:
              aber ich verstehe nicht ganz zu was das ^ und die 0 gebraucht wird
              Wenn du die Ganzzahl Null bitweise invertierst ('~'), erhältst du -1.
              Und wenn du -1 bitweise mit einer anderen Ganzzahl XOR-verknüpfst ('^'), bekommst du das Zweierkomplement dieser Zahl.
              Einfach mit '~' negieren hätte es aber auch getan.

              was spricht den gegen: $zahl++ = ~$zahl; ?
              Das Gleiche wie gegen die anderen Bitfrickel-Aktionen: Es funktioniert nur mit Integers (Ganzzahlen). Für Zahlen größer PHP_MAX_INT (2**32 -1) und kleiner
              -PHP_MAX_INT-1 (-2**32) kannst du so das Vorzeichen nicht umkehren. Bei Gleitkommazahlen innerhalb dieses Bereiches wird eine automatische Typkonvertierung durchgeführt. Dagegen funktioniert
              PHP-Code:
              $zahl 
              immer und wandelt nur bei Bereichsüberschreitungen.
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar


              • #8
                Außerdem ist es lesbar. Man erhält keinen Preis dafür einen möglichst kryptischen PHP-Code zu schreiben.

                Kommentar

                Lädt...
                X