例如,我有一个64位var a和一个8位charb
unsigned long long a = 0x1234567890123456;
unsigned char b = 0x78;
Run Code Online (Sandbox Code Playgroud)
我想a成为0x12345678901234 78
我想要最右边8位a设置b,并保持56位不变,我该怎么办?
a = a & (0xFFffFFffFFffFFff | b); //is this correct?
Run Code Online (Sandbox Code Playgroud)
??
有一个有用的宏定义limits.h,可以帮助使其可移植.是的CHAR_BIT.
a = ((a >> CHAR_BIT) << CHAR_BIT) | b;
Run Code Online (Sandbox Code Playgroud)
就是这样.括号中的部分清除了最不重要CHAR_BIT的部分a,然后可以按位进行逐位处理b.
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |