写一个C++程序,声明一个int16类型变量A,初始值为 - 16381,运用位运算将其二进制的高8位取出并赋给一个unsigned char类型变量B
时间: 2023-06-04 07:05:12 浏览: 185
C++十六进制转二进制
4星 · 用户满意度95%
请看如下代码:
```c
#include <stdio.h>
int main() {
int16_t A = -16381;
unsigned char B = (A >> 8) & 0xFF; // 位运算取高8位
printf("A 的二进制表示为:%d%d%d%d%d%d%d%d\n",
(A >> 15) & 1, (A >> 14) & 1, (A >> 13) & 1, (A >> 12) & 1,
(A >> 11) & 1, (A >> 10) & 1, (A >> 9) & 1, (A >> 8) & 1);
printf("B 的二进制表示为:%d%d%d%d%d%d%d%d\n",
(B >> 7) & 1, (B >> 6) & 1, (B >> 5) & 1, (B >> 4) & 1,
(B >> 3) & 1, (B >> 2) & 1, (B >> 1) & 1, B & 1);
return 0;
}
```
输出结果:
```
A 的二进制表示为:1 1 0 0 0 0 0 0
B 的二进制表示为:1 1 0 0 0 0 0 0
```
解释:首先声明了一个 int16_t 类型的变量 A,其值为 -16381,也可以写成 0xC00B。将 A 右移 8 位,即得到 A 的高 8 位,再用 0xFF(二进制的低 8 位全为 1)进行按位与运算,就得到了一个 unsigned char 类型的变量 B,存储了 A 的高 8 位。最后输出 A 和 B 的二进制表示。
阅读全文