移位操作符

文章介绍了移位操作符在编程中的应用,包括左移操作符(<<)和右移操作符(>>)。左移操作符会丢弃左边的位并用0填充右边,而右移操作符分为算数右移(保留符号位)和逻辑右移(用0填充)。文章特别强调了在负数的算数右移中,保持最高位的符号不变,以及正整数和负整数在内存中的原码、反码和补码表示。
摘要由CSDN通过智能技术生成

1.移位操作符是什么? 

移位,移位,移的就是二进制的位,比如:int a = 4;int 是 4个byte,也就是32个bit,也就是32个二进制数。此时,移位移的就是二进制数。

2.分类:左移操作符 和 右移操作符

左移操作符:<<

右移操作符:>>

3.左移操作符 <<

步骤:(1) 左边丢掉

           (2) 右边补0

如int a = 4;

     int b = a << 1;

二进制位为: 00000000000000000000000000000100

左移之后 :   00000000000000000000000000001000          代表的是b, a还是4

4.右移操作符 >>

(1)算数右移

右边丢弃,左边补原符号位

(2)逻辑右移

右边丢弃,左边补0

我们通常采用的是算数右移,下面有例子

补充:

  (a)内存中存放二进制序列时,最高位是0,是正数,最高位为1, 是负数

  (b)整数的二进制表示形式,有三种,

        但原码,反码,补码不同是只针对负整数

        正整数的原码,反码,补码是相同的

        原码:直接根据数值写出的二进制序列

        反码:将原码的二进制序列,除符号位(最高位)外,其它的按位取反(即1变0,0变1)

        补码:反码+1

        如: -1

        原码:10000000000000000000000000000001

        反码:11111111111111111111111111111110

        补码:11111111111111111111111111111111

        -1在内存中存储,其实是存的是补码

        

如果 -1 右移 是 算数右移的时候:

-1的补码应该是 11111111111111111111111111111111

原码还是10000000000000000000000000000001,打印出来是-1 

打印结果为-1,采用的是算数右移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值