ritschmanhard: Bit setzen geht nicht

Beitrag lesen

Hi undso!

Wie plan_b schon netterweise verlinkt https://forum.selfhtml.org/?t=167194&m=1090380 (und auch zu lesen war) hat, wird die angegebene Zahl nicht als Binär- sondern Dezimalzahl verstanden.
Willst du also bit 5 (dezimalwert 16) setzen, so ver-oder-st du deinen Wert mit 16:
update Tabelle set spalte = spalte | 16

Wenn du dieses Bit löschen willst, dann (Variante1, bekannte bitbreite):

Angenommen spalte hat 16 Bits, dann ist der "Maximalwert" 2^15-1=65535
(=b1111 1111 1111 1111).
Willst du nun das 5. Bit löschen: subtrahiere 16 von 65535, ergo:
update Tabelle set spalte = spalte & 65519 (=b1111 1111 1110 1111)

Es gibt es einen alten Programmierertrick (mal angenommen du weisst nicht wieviele Bits spalte hat):
1. stelle sicher, dass Bit 5 gesetzt ist:
update Tabelle set spalte = spalte | 16
2. verwende nun xor mit dem fraglichen Bit:
update Tabelle set spalte = spalte ^ 16

Grüsse,
Richard