1.左移
6<<2=?
6的二进制在内存中表现形式
0000-0000 0000-0000 0000-0000 0000-0110
向左移两位
00-0000 0000-0000 0000-0000 0000-011000(右边补0)
二进制011000=24
所以 6<<2=24 快捷算法 6x2^2=24
2.右移
6>>2=?
0000-0000 0000-0000 0000-0000 0000-0110
向右移动两位
00 0000-0000 0000-0000 0000-0000 0000-01(左边补0,右边不要)
二进制01=1
所以 6>>2=1 快捷算法 6/2^2=1
特列:
-6>>2=?
-6的内存表现形式负数表现形式讲解
1111-1111 1111-1111 1111-1010
右移两位
11 1111-1111 1111-1111 1111-10
如果-6>>>2
00 1111-1111 1111-1111 1111-10
<<:乘以2的移动位数的次幂 (值变大)
>>:除以2的移动位数的次幂(值越小)
左右移最高位补什么,要看移的值为正数还是负数;正数最高位为0所以补0,负数最高位为1,所以补1
>>> : 无论最高位是什么,都用0补
位运算是最高效的计算







网友评论