OK, dann eben mit der harten Methode... aber wenn man mehrere Varaiblen verwendete, wird das mit dem Einzlenen Bit aufwendig, vor allem wenn man von 5 oder 6 Verschiedenen Variablen immer verschiedene Bits auslesen möchte.
Bit 5 setzen:
ByteWert = ByteWert Or &B00010000
Bit 5 löschen:
ByteWert = ByteWert And &B11101111
Bit 5 umkehren:
ByteWert = ByteWert Nor &B00010000
Das geht auch noch bissche übler \/ ...
Bit 5 bis 8 setzen:
ByteWert = ByteWert Or &B11110000
Bit 5 bis 8 löschen:
ByteWert = ByteWert And &B00001111
Bit 5 und 8 umkehren:
ByteWert = ByteWert Xor &B10010000
Das ganze mal in Kombination:
Bit 1 und 3 setzen und Bit 2 löschen:
ByteWert = (ByteWert Or &B00000101) And &B11111101
Klammer weil And vor Or in der Rangordnung der Operanden ist, sonst würde zuerst &B00000101 mit &B11111101 Und-Verknüpft werden und dann das Resultet mit ByteWert Oder-Verknüpft werden und das wäre sicher falsch. Aber das steht alles im Handbuch der C-Control.
Diese Binärwerte sind deine Maske die Bit für Bit das ganze Byte lang verknüpft wird mit dem entsprechenden Operanden (And / Or / Nor / Nand / Xor)
Das kann man jetzt aber nicht nur auf Bytewerte (8-Bit) anwenden sondern auch auf Word-Werte (16-Bit)![]()
Unteres Byte des Words löschen ( Bit 1-8 ):
WordWert = WordWert And &HFF00
Grüsse Wolfgang
Lesezeichen