'%' ---- '&'



  • &, | und ^ sind bitweises UND, ODER und XOR (die Zahlen werden als Binärwerte angesehen und die Bits je nach Position miteinander verrechnet) - "a&63" führt z.B. ein Bit-UND mit 0x3F durch, setzt also alle Bits von a außer den ersten 7 auf 0.

    % ist der Modulo-Operator, der berechnet den Rest bei ganzzahliger Division.

    (und deine bieden Ausdrücke "a&63" und "a%64" bewirken letztendlich das selbe - eventuell erzeugen sie sogar den selben Maschinencode)

    Edit: Aber das funktioniert nur mit Zweierpotenzen - "a&64" ist NICHT das selbe wie "a%65".



  • genau, ich mit Zeichensatz arbeiten , 1 byte == 8 bit, "/512bit == /64byte"

    kann ich so verstehen, nur bei "&63" bedeutet "%64", (8 fach Zahlen???) sonst nicht??

    vielen Dank Ominion.



  • (a%2) == (a&1)
    (a%4) == (a&3)
    (a%8) == (a&7)
    (a%16) == (a&15)
    (a%32) == (a&31)
    (a%64) == (a&63)
    (a%128) == (a&127)
    ...



  • vielen Dank CStoll.

    ja, richtig, 0x3f ist "0011 1111", aber warum mit '&' bedeutet '%', ich muss sehr vorsichtig beweisen, vielen Dank,

    sonst frage: gibt es andere tolle Trick für "&, |, ^"???



  • & == AND
    | == OR
    ^ == XOR

    Das wäre jetzt die logische Schreibweise, aber ist wahrscheinlich nicht das was du suchst.

    Mfg Ominion



  • vielen Dank winheis.

    ja, habe ich auch so probiert. aber die Beweisung für solche tolle Idee?

    kann man sagen, alle Zahlen, die (2^x) so geschrieben werden kann, kann man diese Idee benutzen?
    (a%2) == (a&1)
    (a%4) == (a&3)
    (a%8) == (a&7)
    (a%16) == (a&15)
    (a%32) == (a&31)
    (a%64) == (a&63)
    (a%128) == (a&127)
    ...

    vielen Dank! :p



  • damo schrieb:

    kann ich so verstehen, nur bei "&63" bedeutet "%64", (8 fach Zahlen???) sonst nicht??

    Nein, das betrifft alle Zweierpotenzen:

    a & (2x-1) setzt alle Bits ab Position x auf 0 (bitweise UND)
    a % /2x) berechnet den Rest bei der Division von a/2x

    Und mit Hilfe von binärer Arithmetik (a%x liegt im Bereich [0..x-1]) kann daraus ermittelt werden, daß du mit beiden Berechnungen das selbe Ergebnis herausbekommst (ich hab' die genauen Formeln leider nicht im Kopf).



  • Ich verstehe jetzt diese Aussage nicht richtig:

    damo schrieb:

    kann man sagen, alle Zahlen, die (2^x) so geschrieben werden kann, kann man diese Idee benutzen?

    Mfg Ominion

    [EDIT]Lol. Jetzt hast du mal wieder editiert, als ich geschrieben habe.[/EDIT]



  • Die Idee mit den 2er Potenzen ist richtig. Den Beweis würde ich mit der Methode der vollständigen Induktion ansetzen.



  • Ominion,sorry, ich kann nicht gut Deutsch.

    alle "Zweierpotenzen" == 2^x

    CStoll antwortet schon.

    welche Literatur kann ich nachschlagen , für diese Arithmetik??

    vielen Dank zu alles :p



  • vielen Dank winheis, ich guck mal die Links zuerst.


Anmelden zum Antworten