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