使用按位运算符将多个值打包到一个 int 中
2022-09-01 03:28:31
低级位操作从来都不是我的强项。我将不胜感激,这将有助于理解按位运算符的以下用例。考虑。。。
int age, gender, height, packed_info;
. . . // Assign values
// Pack as AAAAAAA G HHHHHHH using shifts and "or"
packed_info = (age << 8) | (gender << 7) | height;
// Unpack with shifts and masking using "and"
height = packed_info & 0x7F; // This constant is binary ...01111111
gender = (packed_info >> 7) & 1;
age = (packed_info >> 8);
我不确定这段代码正在完成什么以及如何实现?为什么使用幻数0x7F?如何完成打包和解包?