.например, 0xFE10, должно выводить 0xF (1111 в двоичном виде).
Это вопрос интервью Qualcomm.Пока это моя идея:
Я звоню 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 );
Однако яЯ уверен, что есть более простой и легкий способ сделать это.Может кто-нибудь мне помочь?Спасибо!