Java中的三种位移运算符

  1. << 左移运算符
    表达式:value << num
    左移的规则
    丢弃最高位,0补最低位
    按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
    当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃;
    当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。
    当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
    计算过程
    举例:8是int型的情况下8<<3结果等于64,相当于8×2的3次方
    把8转换为二进制数字0000 0000 0000 0000 0000 0000 0000 1000,
    把这组数字左移3位则得到的最终结果是0000 0000 0000 0000 0000 0000 0100 0000,

  2. >> 右移运算符
    表达式:value >> num
    左移的规则
    符号位不变,左边补上符号位
    按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1
    当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
    如果要移走的值为负数,每一次右移都在左边补1,如果要移走的值为正数,每一次右移都在左边补0,这叫做符号位扩展(保留符号位),在进行右移操作时用来保持负数的符号。
    计算过程
    35 >> 2(35为int型)35 >> 2结果等于8,相当于8/2的2次方
    35转换为二进制:0000 0000 0000 0000 0000 0000 0010 0011
    把低位的最后两个数字移出:0000 0000 0000 0000 0000 0000 0000 1000
    转换为十进制: 8

  3. >>> 无符号右移运算符
    表达式:value >>> num
    无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位
    无符号右移运算符>>> 只是对32位和64位的值有意义

补充一下之前欠缺的:0x8f,此16进制数转换为二进制位1000 1111,
通常颜色用16进制数
例如:0xFBFFFFFF,从左往右FB表示透明度,FFFFFF表示颜色
用二进制表示就是:
1111 1011 1111 1111 1111 1111



作者:Ggx的代码之旅
链接:https://www.jianshu.com/p/d3692750c31d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值