Я работаю с некоторыми побитовыми операторами, и я хочу извлечь последние 16 двоичных цифр числа и выполнить с ними операцию. Я в основном хочу увидеть отрицательный int, такой как 0xFFFFFFFF, а затем извлечь LSB FFFF и объединить их с 0, чтобы я получил ноль, чтобы он выглядел как 0x0000FFFF вместо этого. Меня интересуют только меньшие отрицательные числа, поэтому LSB должен быть всей необходимой мне информацией.
Вот мой подход в C:
#include <stdio.h>
int main(){
int a = -1, c = 0;
short b = (short)a;
printf("a is %x\nb is %x",a,b);
c = (0 << 16) | b;
printf("\nc is %x\n", c);
return 0;
}
Мой мыслительный процесс заключался в том, что я могу преобразовать свой int a в короткий, чтобы он выглядел как FFFF вместо FFFFFFFF. У меня будет лучшее время. К сожалению для меня, это просто распечатывает ffffffff для переменных
(short)aне нужно, потому что любое более широкое значение будет автоматически усечено - person phuclv   schedule 02.02.2016