Хранить два целых числа в одном байте - PullRequest
1 голос
/ 05 марта 2012

Я хотел бы сохранить два 4-битных целых числа (1,4,7 .....) в один байт.

У меня есть 2 целых числа a=0001 и b=1111, яхотел бы сохранить это целое число в один байт в памяти.

Может кто-нибудь помочь мне с этим?

1 Ответ

6 голосов
/ 05 марта 2012

Вам нужно сдвинуть один из них на четыре бита, затем использовать двоичное ИЛИ.

unsigned char number = (a << 4) | b;

И чтобы вернуть их обратно, замаскируйте один с помощью 1111b и сдвиньте другой обратно:

a = number >> 4;
b = number & 15;
...