uint64_t b = 0x020306082312; 截取高4位,再合并
时间: 2024-03-18 21:39:39 浏览: 58
16位数据取高其8位,低8位,高4位,低4位数据,并重新组合
可以使用位运算和移位操作来实现。步骤如下:
1. 将uint64_t变量b右移48位,得到0x0203,使用按位与操作,得到高4位。
2. 将高4位左移60位,得到0x0200000000000000,将其赋值给uint64_t变量的最高4位,使用左移4位操作。
3. 将原始uint64_t变量b的低60位保留,高4位清零,然后左移4位,得到0x3060823120000000,将其赋值给uint64_t变量的4~63位,使用按位或操作。
代码示例:
```c
#include <stdio.h>
#include <stdint.h>
int main() {
uint64_t num = 0;
uint64_t b = 0x020306082312;
uint64_t high4 = (b >> 48) & 0xF;
num |= (high4 << 60);
num |= ((b & 0x00FFFFFFFFFFFFFF) << 4);
printf("%llx\n", num);
return 0;
}
```
输出结果为:
```
20306082312000000
```
解释:将uint64_t变量b右移48位,得到0x0203,使用按位与操作,得到高4位;将高4位左移60位,得到0x0200000000000000,将其赋值给uint64_t变量的最高4位,使用按位或操作;将原始uint64_t变量b的低60位保留,高4位清零,然后左移4位,得到0x3060823120000000,将其赋值给uint64_t变量的4~63位,使用按位或操作。
阅读全文