。
例如,我有一个 64 位 var a
和一个 8 位字符b
unsigned long long a = 0x1234567890123456;
unsigned char b = 0x78;
我想让a
成为0x1234567890123478
我希望最右边的 8 位a
设置为 b
,并保持左边的 56 位不变,我该怎么做?
a = a & (0xFFffFFffFFffFFff | b); //is this correct?
??
limits.h
中定义了一个有用的宏,可以帮助使其可移植。这是CHAR_BIT
.
a = ((a >> CHAR_BIT) << CHAR_BIT) | b;
仅此而已。括号中的部分清除了a
的最不重要的CHAR_BIT
,然后可以用b
按位或