移位运算符(<<和>>)

//整数的二进制表示有:原码 反码 补码;
//存储到内存为补码;
//打印到屏幕上为原码;

#include<stdio.h>

int main()
{

//右移操作符:(正数有/2的效果)
//1.算数右移:右边丢弃,左边补原符号位;(用这个)
//2.逻辑右移:右边丢弃,左边补0;

    int a = 15;
    int b = a >> 1;
    int c = -1;
    int d = c >> 1;
    printf("%d %d\n",b,d);

//左移操作符:(有*2的效果)
//左边丢弃,右边补0;

    int e = 15;
    int f = a << 1;
    int g = -1;
    int h = c << 1;
    printf("%d %d\n",f,h);
    return 0;
}

//警告:对于移位运算符,不要移动负位数,这个是标准未定义的。例如:
//int num = 10 >> -1; (error)

运行结果如下:

 

posted @ 2021-08-11 13:40  1379号监听员"  阅读(740)  评论(0)    收藏  举报