• java 移位


    java中没有2进制的数据类型,对二进制的操作,需要使用三种操作符

    << 左移位操作符,算数左移           用来将一个数的二进制位序列左移若干位,高位左移后溢出,舍弃不用,右补0(结果会变大)
    >> 右移位操作符,算数右移           用来将一个数的二进制位序列右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值,左侧用原符号位补齐,负的就填1,正的就填0(结果会变小)
    >>> 无符号右移操作符,逻辑右移    用来将一个数的二进制位添零右移若干位,即向右移动若干位,移到右端的低位被舍弃,左侧添零,不管正负。所以它也叫无符号右移

    a>>b;
    a表示要操作的数
    b表示要移的位数

    123的32位二进制数: 0000 0000 0000 0000 0000 0000 0111 1011

    123 >> 3 右移步骤如下:

                               0000 0000  0000 0000 0011 1101  右移一位(右移一位表示除2,反之左移一位表示乘2)
                               0000 0000  0000 0000 0001 1110  右移二位
                               0000 0000  0000 0000 0000 1111  右移三位 的结果转换成十进制8+4+2+1=15

    123 >> 3 == 15

     

    a>>b 等价于 a>>(b%32)
    也就是说
    a>>32 等价于 a>>>0,移32位等于没移
    a>>33 等价于 a>>>1
    a>>34 等价于 a>>>2

    i <<= 1;//i = i<<1 i等于i乘以2的1次方

    i <<= 2;//i = i<<2 i等于i乘以2的2次方

    >>就是相除了

  • 相关阅读:
    WebSocket使用及优化(心跳机制与断线重连)
    JS案例:触底懒加载
    你知道近来年大火的DDD是如何兴起的吗?以及与微服务的关系
    Sql Server的Cross Apply用法
    跨域信息传递解决方案
    【转】理解字节序
    NATAPP优惠码
    <学习笔记>筛法
    <学习笔记>线性基
    【react + BizCharts】
  • 原文地址:https://www.cnblogs.com/o-andy-o/p/3416271.html
Copyright © 2020-2023  润新知