mop65715
May 21st, 2008, 03:03 PM
I've got a code here that'll determine if a bit is set. So now:
typedef unsigned short ushort_type ;
int IsSet(ushort_type x, int i)
{
/* No out-of-bounds cases */
if (i < 0 || i > MSB)
return 0;
/* Check if bit is set and return accordingly */
if ( x & ( 1 << i ) )
return 1;
else
return 0;
}
What I'd like to do is examine two bit pairs from the 16 bit type. In other words consider a 16 bit type:
[15[14[13[12[11[10[9[8[7[6[5[4[3[2[1[0
I'd like to examine bits [0,1]; [2,3]; [4,5] etc - in other words, the examination is done in pairs. Assume bits, 0 and 1 is set. The returned value would be a 3. Similarily if bit 3 from the set [2,3] is set then the returned value is 2. If 4 is set from the set [4,5] the returned value is a 1.
While not a programmer by definition, bit fiddiling is certainly not my strong suite. Having slight difficulty achieving this via source. Any help appreciated.
typedef unsigned short ushort_type ;
int IsSet(ushort_type x, int i)
{
/* No out-of-bounds cases */
if (i < 0 || i > MSB)
return 0;
/* Check if bit is set and return accordingly */
if ( x & ( 1 << i ) )
return 1;
else
return 0;
}
What I'd like to do is examine two bit pairs from the 16 bit type. In other words consider a 16 bit type:
[15[14[13[12[11[10[9[8[7[6[5[4[3[2[1[0
I'd like to examine bits [0,1]; [2,3]; [4,5] etc - in other words, the examination is done in pairs. Assume bits, 0 and 1 is set. The returned value would be a 3. Similarily if bit 3 from the set [2,3] is set then the returned value is 2. If 4 is set from the set [4,5] the returned value is a 1.
While not a programmer by definition, bit fiddiling is certainly not my strong suite. Having slight difficulty achieving this via source. Any help appreciated.