'%' ---- '&'
-
hallo,
wer kann mir erklären, warum "a&63" bedeutet "a%64"?
(aber "a&64" nicht bedeutet "a%65")bitweise schreiben kann das Programm schnell laufen lassen, wer kann mir vielleicht helfen, die klever Anwendung von '&' '|' oder '^'?
thausend Dank!!!
-
Das liegt warscheinlich am Zeichensatz.
Mfg Ominion
-
&, | 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
^ == XORDas 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/2xUnd 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.