5. c语言按short和unsigned short类型分别对-1进行左移2位和右移2位操作
时间: 2023-09-03 20:15:01 浏览: 225
位运算符-华清远见 c补习 2运算符&表达式&数据类型.
按照C语言的规定,对于有符号类型的数据,左移操作可能会导致符号位的改变,而右移操作则不会改变符号位。因此,对于-1这个有符号的short类型数据,左移2位后符号位会变为1,变成了一个负数,而右移2位后符号位仍为1,仍然是一个负数。
对于无符号类型的数据,在移位操作中不需要考虑符号位的问题。因此,对于无符号的unsigned short类型数据,左移2位后相当于乘以4,右移2位后相当于除以4。
具体的代码如下:
```c
#include <stdio.h>
int main() {
short a = -1;
unsigned short b = -1;
// 左移2位
short c = a << 2;
unsigned short d = b << 2;
// 右移2位
short e = a >> 2;
unsigned short f = b >> 2;
printf("a: %d\n", a);
printf("b: %u\n", b);
printf("c: %d\n", c);
printf("d: %u\n", d);
printf("e: %d\n", e);
printf("f: %u\n", f);
return 0;
}
```
输出结果为:
```
a: -1
b: 65535
c: -4
d: 65532
e: -1
f: 16383
```
阅读全文