James Kanze
11/18/2008 11:01:00 PM
On Nov 18, 9:22 pm, pasamdi...@gmail.com wrote:
> I need to store an unsigned 16 bit number in the upper (MSB)
> and another unsigned 16 bit number in the 16 LSB. Basically, I
> am trying to store two unsigned 16 bit numbers into one
> unsigned 32 bit number.
> So far, I have the following:
> struct
> {
> unsigned int num1:16;
> unsigned in num2:16;
> } twoUnsigned16BitNums;
That may or may work (then memcpy'ing the results); check your
compilers documentation.
> unsigned int num;
> What I am having trouble with is to store the two 16 bit
> numbers into the 32 bit number. I know one option is to use
> bit wise ANDs and ORs.
That's the usual solution.
> Any help on your part is greatly appreciated.
Is "number1 << 16 | number2" what you're looking for? (Just
make sure that 32 bit arithmetic is used here. If number1 is an
unsigned int, and int's are only 16 bits, you'll have to cast it
to unsigned long first.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34