I am receiving a number N where N is a 4-bit integer and I need to change its LSB to 1 without changing the other 3 bits in the number using C.
Basically, all must read XXX1.
So lets say n = 2, the binary would be 0010. I would change the LSB to 1 making the number 0011.
I am struggling with finding a combination of operations that will do this. I am working with: !, ~, &, |, ^, <<, >>, +, -, =.
This has really been driving me crazy and I have been playing around with >>/<< and ~ and starting out with 0xF.
Try
This should set the LSB to 1 regardless of what the number is. Why? Because the bitwise OR (
|) operator does exactly what its name suggests: it logical ORs the two numbers’ bits. So if you have, say, 1010b and 1b (10 and 1 in decimal), then the operator does this:And that’s exactly what you want.
For your information, the
statement is equivalent to