Java中的移位操作

一、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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容