java 移位 简书_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值