int main(int argc, char** argv) {
int a, b;
a = 0x0f000000; // Contain 32 bit value
printf("before = %d\n", a);
b = a & (~0xff000000); // convert the last 8 bits to zero so we got only 24 bit value in b
printf("After = %d\n", b);
return (EXIT_SUCCESS);
}
Существует число, содержащее 32-битное значение, но число b содержит только 24 бита, начиная с наименее значащей цифры.И это не зависит от порядкового номера, потому что побитовые операторы не работают с представлением в памяти.
Так что вы можете использовать
num = num & (~0xff000000);
, чтобы получить последнее 24-битное значение.