【发布时间】:2011-12-03 00:55:23
【问题描述】:
。例如0xFE10,应该输出0xF(二进制1111)。
这是一道高通面试题。到目前为止,这是我的想法:
我调用的是 16 位整数:
int num = /*whatever the number is*/
有四个位掩码:
int zeroTo4 = (num & 0x000F);
int fiveTo5 = (num & 0x00F0) >> 4;
int eightTo12 = (num & 0x0F00) >> 8;
int twelveTo16 = (num & 0xF000) >> 12;
int printbit = zeroTo4;
if( fiveTo5 > printbit )
printbit = fiveTo5;
if( eightTo12 > printbit )
printbit = eightTo12;
if( twelveTo16 > printbit )
printbit = twelveTo16;
printf( "Largest bit of %X is %1X\n", num, printbit );
但是,我很确定有一种更简单的方法可以做到这一点。谁能帮我吗?谢谢!
【问题讨论】:
标签: binary hex bit-manipulation bit-shift