给定一个short型数据-12345, 进行左移 2 位和右移 2 位操作。 给定一个unsigned short型数据12345, 进行左移 2 位和右移 2 位操作。 #include<bits/stdc++.h> using namespace std; int main(){ short short_g=-12345; printf("short_g=%hd,short_g=0x%hx\nzshort_g=%hd,zshort_g=0x%hx\nyshort_g=%hd,yshort_g=0x%hx\n", short_g,short_g,short_g<<2,short_g<<2,short_g>>2,short_g>>2); return 0; }分析代码运算原理以及结果
时间: 2024-03-23 18:43:17 浏览: 66
代码中给定了一个 short 型数据 `short_g`,值为 -12345,然后进行了左移 2 位和右移 2 位的操作。左移和右移操作的原理如下:
左移:将二进制数向左移动指定的位数,右边用 0 填充。
右移:将二进制数向右移动指定的位数,左边用原来的最高位填充。
对于 `short_g` 的左移操作:`short_g << 2`,二进制数为 `1101001101110001`,向左移动 2 位后变成 `0100110111000100`,转换成十进制数为 16420。所以输出的结果为:
```
short_g=-12345,short_g=0xccd7
zshort_g=16420,zshort_g=0x402c
yshort_g=-3087,yshort_g=0xf1d9
```
对于无符号的 unsigned short 型数据,左移和右移的原理与上面相同,只是右移时最高位补充的是 0 而不是原来的最高位。对于 `unsigned_short_g` 的左移操作:`unsigned_short_g << 2`,二进制数为 `0011001000111001`,向左移动 2 位后变成 `1100100011100100`,转换成十进制数为 49348。所以输出的结果为:
```
unsigned_short_g=12345,unsigned_short_g=0x3039
zunsigned_short_g=49380,zunsigned_short_g=0xc0e4
yunsigned_short_g=3087,yunsigned_short_g=0x0c1f
```
阅读全文