uint64_t b = 0x020306082312; 截取高4位,再合并
时间: 2024-03-18 09:39:39 浏览: 25
可以使用位运算和移位操作来实现。步骤如下:
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位,使用按位或操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)