Wies gesetzt wird hab ich ja auch gezeigt.Skiller hat geschrieben:Hallo Freunde,
konnte mich leider jetzt erst intensiver damit auseinader setzen.wie hast Du denn das Bit 3 gelöscht, ich wollt´s doch selbst setzen. Aber unabhängig davon habe ich im@Thorium
;Bit 3 löschen
Test = Test & %0111
Nochmal etwas ausführlicher: Hier wird eine bitweise AND Verknüpfung durchgeführt. Dabei werden die einzelnen Bits zweier Werte miteinander verglichen und daraus ein neuer Wert gebildet. Bei AND ist das Bit im neuen Wert gesetzt, wenn es bei den beiden verglichenen Werten gesetzt ist. Ist es nur bei einem der beiden oder bei keinem gesetzt, wird es im neuen Wert gelöscht.
Also:
Test sieht am Anfang so aus: 1000
Bit 0 bis 2 sind gelöscht und bit 3 ist gesetzt.
Um nun Bit 3 zu löschen verrechnen wir es einfach mit AND und 0111.
Daraus ergibt sich:
1000 Test vorher
0111 Wert mit dem wir verrechnen
0000 Test nachher
Bit 0 in Wert1 ist 0 und in Wert2 1 also wird es 0 im neuen Wert.
Bit 1 in Wert1 ist 0 und in Wert2 1 also wird es 0 im neuen Wert.
Bit 2 in Wert1 ist 0 und in Wert2 1 also wird es 0 im neuen Wert.
Bit 3 in Wert1 ist 1 und in Wert2 0 also wird es 0 im neuen Wert.
Na, ich bin nicht so gut im Erklären. Such mal nach bitweisen Operationen bei Google. Das ist ziemlich wichtig zu verstehen, wenn du Wert auf Optimierung legst. Damit lassen sich viele Sachen machen. Man kann z.B. mit AND auch einen schnellen Modulo machen.
Was ich gepostet habe ist am schnellsten. Es wird zum setzen und löschen nur eine einzige Operation ausgeführt. Ein Makro ist zwar etwas einfacher in der Handhabung aber da hast du eine zusätzliche Shift Operation. OS spielt keine Rolle, davon bekommt das OS garnix mit, gild natürlich auch fürs Makro.Skiller hat geschrieben: CodeArchiv mit 'macro_testbits.pb' die glaub ich schnellste Lösung gefunden. Das Problem allerdings: OS:Windows. Habt ihr vielleicht ne superschnelle plattformunabhängige Lösung?
