移位操作符(<< (左移操作符), >>(右移操作符))详解

一:<<(左移操作符)

移位规则:左边抛弃,右边补0; 

二:例子详解

正数了解

 7

为例子 整数7(4字节*8bit位)

了解(正整数原码反码补码相同)

原码00000000000000000000000000000111
反码00000000000000000000000000000111
补码00000000000000000000000000000111

正数移位代码

int main()
{
    int a = 7;
    int b = a << 1;//表示移一位    //移位是移位补码以原码的方式呈现

//补码:00000000000000000000000000001110

//反码:00000000000000000000000000001110

//原码:00000000000000000000000000001110  //也就是14
    printf("%d\n",a);//7移位规则:左边抛弃,右边补0;
    printf("%d", b);//14
    return 0;
}

负数了解

-7展示

原码10000000000000000000000000000111(最高位(符号位)为0则是整数最高位为1则为负数)
反码11111111111111111111111111111000(原码符号位不变其他位按位取反)
补码11111111111111111111111111111001(反码加1就是补码)

负数移位代码

int main()
{
    int a = -7;
    int b = a << 1;

//左移后

//补码:111111111111111111111111111110010  //减1为反码

//反码:111111111111111111111111111110001

//原码:10000000000000000000000000001110 //为-14
    printf("%d\n", a);//-7
    printf("%d", b);//-14
    return 0;

二: >>(右移操作符)

 移位规则: 1;逻辑移位;左边补0,右边丢弃
                    2;算术移位;左边用原该值的符号位填充,右边丢弃

自行在编译器上了解

三 :注意事项

1:移位也不要为负数位,这个是标准未定义

2:移位操作符的操作数只能是整数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值