Я работаю с некоторыми побитовыми операторами, и я хочу извлечь последние 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