Nur mal eine Frage zu |



  • Achja?

    101010 | 101010 = 101010
    000000 | 101010 = 101010

    Woher weisst du bitte schoen was der urspruengliche Wert war?



  • Thomas (: schrieb:

    Das geht nicht wieder zureuck, | ist ein Bit-Oder.

    Natürlich musst das zurückgehen. Aber wie 😃



  • Im Gegensatz zu Addition oder Multiplikation (entsprechenden Zahlenbereich vorausgesetzt) sind die Bit-Operationen nicht umkehrbar - als beste Näherung kannst du höchstens einzelne Bits auf Null setzen (das funktioniert mit Obi's " var &= ~4; ") oder testen, ob sie gesetzt wurden ( if(var&4)... ). Aber du hast keine Möglichkeit, aus " var = irgendwas | 4;" Rückschlüsse über den Inhalt von 'irgendwas' zu führen.



  • elma schrieb:

    Würde mich mal interessieren.

    - gehört zu +
    / zu *

    aber was ist mir

    int var = 1|2|4;

    was ist das Gegenteil? Also wie entfernt man z.B. die 4 wieder aus var?

    wenn das flags sein sollen, dann schaut man einfach nur ob ein bestimmtes flag gesetzt ist.

    if(var&2) //2 ist gesetzt
    


  • CStoll schrieb:

    sind die Bit-Operationen nicht umkehrbar

    Fast. XOR ist schon umkehrbar. 🙂



  • groovemaster schrieb:

    Fast. XOR ist schon umkehrbar. 🙂

    OK, Punkt für dich. Aber von XOR war auch oben nicht die Rede - und die Operatoren AND (&) und OR (|) sind definitiv NICHT umkehrbar.



  • CStoll schrieb:

    Im Gegensatz zu Addition oder Multiplikation (entsprechenden Zahlenbereich vorausgesetzt) sind die Bit-Operationen nicht umkehrbar

    additition und subtraktion sind auch nur umkehrbar, wenn man beide vorherigen werte kennt und mit bitoperationen kriegt man auch 'ne umkehrung hin wenn man noch weiss was man vorher hatte...



  • net schrieb:

    additition und subtraktion sind auch nur umkehrbar, wenn man beide vorherigen werte kennt und mit bitoperationen kriegt man auch 'ne umkehrung hin wenn man noch weiss was man vorher hatte...

    Mal langsam: "Umkehrbar" bedeutet, daß du aus einem Summanden und der Summe wieder den zweiten Summanden ermitteln kannst. Aus "erg = x + key;" kannst du später wieder rückrechnen, was in x stand*, bei "erg = x | key;" klappt das nicht mehr.

    * ich gehe davon aus, daß du key zwischengespeichert hast - wenn du nur die Summe hast, ist eine Zerlegung auch nicht mehr eindeutig möglich



  • net schrieb:

    additition und subtraktion sind auch nur umkehrbar, wenn man beide vorherigen werte kennt

    Addition und Subtraktion kann ich auch umkehren, wenn ich nur einen der beiden Ausganswerte und das Ergebnis habe. Mit den Bitoperationen geht das nicht (außer xor).



  • MFK schrieb:

    Addition und Subtraktion kann ich auch umkehren, wenn ich nur einen der beiden Ausganswerte und das Ergebnis habe. Mit den Bitoperationen geht das nicht (außer xor).

    ach so war das gemeint. na, dann hab' ich das falsch verstanden...


Anmelden zum Antworten