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,采用的是算数右移