0
。例如0xFE10,应输出0xF(1111二进制)。给定一个16位整数,比较每个四位并输出最大值
这是一个高通面试问题。这是迄今为止我的想法:
我打电话的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);
不过,我敢肯定有一个简单,更简单的方法来做到这一点谁能帮我吗?谢谢!
由于'int'是一个符号量,这将失败,如果'Ĵ<0'。 –
这可能是一个无限循环.. – harold
不能通过改变while条件从'j> 0'到'while(j!= 0)'来解决那个角落的情况吗? – lordmarinara