I have 1 bit in a byte (always in the lowest order position) that I’d like to invert.
ie given 00000001 I’d like to get 00000000 and with 00000000 I’d like 00000001.
I solved it like this:
bit > 0 ? 0 : 1;
I’m curious to see how else it could be done.
How about:
This simply XOR’s the first bit with 1, which toggles it.
If you want to flip bit #N, counting from 0 on the right towards 7 on the left (for a byte), you can use this expression:
This won’t disturb any other bits, but if the value is only ever going to be 0 or 1 in decimal value (ie. all other bits are 0), then the following can be used as well:
Again, if there is only going to be one bit set, you can use the same value for 1 as in the first to flip bit #N:
Of course, at that point you’re not actually doing bit-manipulation in the same sense.
The expression you have is fine as well, but again will manipulate the entire value.
Also, if you had expressed a single bit as a
boolvalue, you could do this:Which toggles the value.
More of a joke:
Of course, the “enterprisey” way would be to use a lookup table: