Go Down

Topic: Bit manipulation and addition? (Read 706 times) previous topic - next topic

pyrohaz

Hey guys,
I have two 4 bit numbers but I want to "combine" (lack of a better word) these into one 8 bit

For example:
firstnumber = 1010
secondnumber = 1100

I want to put these together literally like:
10101100

How do I do this?

And also, if I and that 8 bit number with 15, will I get the firstnumber? And therefore anding with 240, get the second number?

Cheers, Harris

holmes4

first number*8+second number

Mark

zeb99

Actually, it would be firstnumber * 16 + secondnumber.

Although this may be more reliable:

result = (firstnumber & 0x0f) << 4 | (secondnumber & 0x0f)

Therefore:

secondnumber = result & 0x0f

firstnumber = (result & 0xf0) >> 4

pyrohaz

I tried Marks method and was wondering why it didnt seem to work, I then tried your method zeb and it worked great! Thanks a bunch as per guys :)

retrolefty


Actually, it would be firstnumber * 16 + secondnumber.

Although this may be more reliable:

result = (firstnumber & 0x0f) << 4 | (secondnumber & 0x0f)

Therefore:

secondnumber = result & 0x0f

firstnumber = (result & 0xf0) >> 4


Now that is a complete answer. C can be so nice and concise if you let it be.

Mark meant well, just having a bad hair day.  ;)

Lefty

pyrohaz



Actually, it would be firstnumber * 16 + secondnumber.

Although this may be more reliable:

result = (firstnumber & 0x0f) << 4 | (secondnumber & 0x0f)

Therefore:

secondnumber = result & 0x0f

firstnumber = (result & 0xf0) >> 4


Now that is a complete answer. C can be so nice and concise if you let it be.

Mark meant well, just having a bad hair day.  ;)

Lefty



No need to worry! I definitely appreciate the help from both :)

zeb99

Glad to have been of assistance.

holmes4


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy