Java中的运算符<<,>>,>>>(Java中没有<<<运算符)

二进制中第一位为符号位,1表示负数,0表示正数。
1、 <<左移运算符(左移没有带或不带符号之分)。
例如9 << 2,将9向左移两位,9的二进制是01001,左移两位,后面补0,结果为0100100,转换为十进制就是36。按照十进制来看,左移一位相当于原值乘二得到结果,这里左移两位,乘二的二次方,即4,得36。
2、 >>右移运算符,>>为带符号右移。
带符号右移(>>)时,第一位原来是什么就补什么,负数原来第一位是1,右移后补1,正数原来第一位是0,右移补0,带符号右移数字的符号不变。例如9 >> 2,9的二进制是01001,右移两位,前面补0,结果为00010,十进制为2。按十进制来看,右移一位相当于原值除二,这里用的是整型除法,只会有整数部分。9 / 2 = 4,4 / 2 = 2。-6 >> 1 = -3。
3、 >>>为不带符号右移。
不带符号右移(>>>)时,负数移动后,第一位前会补0,负数就会变成一个正数。计算-6 >>> 1,int类型为4字节,1字节8位,共32位,第1位为符号位,用补码表示,-6用十六进制表示为fffffffa,向右移1位,第一位补0,结果用十六进制表示为7ffffffd,十进制是2147483645,发生了比较大的变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值