Java中的移位操作

2018-04-20  本文已影响0人  阿鸽

一、Java中的原码、反码和补码

1、以byte型数据为例,每个数值占8位,第一位是符号位,正数是0,负数是1

2、正数:原码、反码和补码是一样的

例如:2

原码:0000 0010

3、负数:反码是给原码的数字位(除符号位)的每一位取反,补码是给反码加1

例如:-2

原码:1000 0010

反码:1111 1101

补码:1111 1110

二、移位操作

1、Java中的移位一般分为左移(<<)、右移(>>)、无符号右移(>>>)。所有的移位操作都是针对补码

2、左移:数值的补码全部左移n位,舍弃符号位,右边的低位补0

2的补码:0000 0010           2

左移2位:0000 1000           8

-2的补码:1111 1110          -2

左移2位:1111 1000          -8

3、右移:数值的符号位不变,数字位的补码全部右移n位,左边补符号位

16的补码:0001 0000       16

 右移2位: 0000 0100        4

-16的补码:1111 0000      -16

右移2位:   1111 1100       -4

4、无符号右移:数值的所有位包括符号位都全部右移,前边补0

-16的补码:1111 0000      -16

右移2位:   0011 1100      60

上一篇 下一篇

猜你喜欢

热点阅读