2

I have to get values from a byte saved in three parts of bit combination.

Bit Combination is following

| - - | - - - | - - - |

first portion contains two bits Second portion contains 3 bits Third portion contains 3 bits

sample value is

11010001 = 209 decimal

What I want is create Three different Properties which get me decimal value of three portion of given bit as defined above.

how can i get Bit values from this decimal number and then get decimal value from respective bits..

2 Answers 2

5

Just use shifting and masking. Assuming that the two-bit value is in the high bits of the byte:

int value1 = (value >> 6) & 3;  // 3 = binary 11
int value2 = (value >> 3) & 7;  // 7 = binary 111
int value3 = (value >> 0) & 7;

The final line doesn't have to use the shift operator of course - shifting by 0 bits does nothing. I think it adds to the consistency though.

For your sample value, that would give value1 = 3, value2 = 2, value3 = 1.

Reversing:

byte value = (byte) ((value1 << 6) | (value2 << 3) | (value3 << 0));
Sign up to request clarification or add additional context in comments.

Comments

1

You can extract the different parts using bit-masks, like this:

int part1=b & 0x3;
int part2=(b>>2) & 0x7;
int part3=(b>>5) & 0x7;

This shifts each part into the least-significant-bits, and then uses binary and to mask all other bits away.

And I assume you don't want the decimal value of these bits, but an int containing their value. An integer is still represented as a binary number internally. Representing the int in base 10/decimal only happens once you convert to string.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.