Java基础知识--“位移”

作者: Android那些事儿 | 来源:发表于2017-06-21 14:20 被阅读19次

    ** 文章摘要 **
    1、移位包括左移和右移。左移相当于乘法,右移相当于除法。
    2、右移包括带符号右移,无符号右移。


    一、“位移”操作规则
    1、左移:“a<<b”,将二进制a依次左移b位,低位空出来的b个位置补0。
    2、带符号右移:“a>>b”,将二进制数a依次右移b位,高位空出来的b个位置,补充原来的符号位,即:正数补0,负数补1。
    3、无符号右移:“a>>>b”,将二进制数a依次右移b位,高位空出来的b个位置,补0。

    • 1、左移3位操作实例:
    value 移位前 移位后
    -2) 11111111111111111111111111111110 11111111111111111111111111110000(-16)
    2 0000 0010 0001 0000(16)
    • 2、带符号右移3位实例:
    value 移位前 移位后
    -16 11111111111111111111111111110000 11111111111111111111111111111110(-2)
    16 0001 0000 0000 0010(2)
    • 3、无符号右移3位实例:
    value 移位前 移位后
    -16 11111111111111111111111111110000 00011111111111111111111111111110
    16 0001 0000 0000 0010(2)

    二、“位移”操作的运用

    一般来说,位移比乘除算式运算效率更高。

    1、左移相当于乘法,每移一位相当于乘2;

    System.out.println("1<<1 = "+(1<<1)
     +",1<<2 = "+(i<<2)
     +",1<<3 = "+(i<<3));//1<<1 = 2,1<<2 = 4,1<<3 = 8
    

    2、右移相当于除法,每移一位相当于除2;

    System.out.println("8>>1 = "+(8>>1)
     +",8>>2 = "+(8>>2)
     +",8>>3 = "+(8>>3));//8>>1 = 4,8>>2 = 2,8>>3 = 1
    

    相关文章

      网友评论

        本文标题:Java基础知识--“位移”

        本文链接:https://www.haomeiwen.com/subject/lkvzqxtx.html