zoukankan      html  css  js  c++  java
  • Java移位运算符详解实例——左移位运算符>>、带符号的右移位运算符>>

    移位运算符也针对二进制的“位”,它主要包括:左移位运算符(<<)、右移位运算符(>>>)、带符号的右移位运算符(>>)。

     


    1.左移运算符
    左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。
    public class reyo17
    {
    public static void main(String[] args)
    {
    int a=2;
    int b=2;
    System.out.println("a 移位的结果是:"+(a<<b));
    }
    }
    运行结果
    a 移位的结果是:8
    分析上面的程序段:
    首先从本质上来分析,2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8。

     


    2.右移运算符
    右移运算符用符号“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方。
    public class reyo18
    {
    public static void main(String[] args)
    {
    int a=16;
    int b=2;
    System.out.println("a 移位的结果是:"+(a>>>b));
    }
    }
    运行结果
    a 移位的结果是:4
    分析上面的程序段:从本质上来分析,16 的二进制是00010000,它向右移动2 位,就变成了00000100,即4。如果从另一个角度来分析,它向右移动2 位,其实就是除以2 的2 次方,结果还是4。

     


    3.带符号的右移运算符
    带符号的右移运算符用符号“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1,先看下面一个简单的例子。
    public class reyo19
    {
    public static void main(String[] args)
    {
    int a=16;
    int c=-16;
    int b=2;
    int d=2;
    System.out.println("a 的移位结果:"+(a>>b));
    System.out.println("c 的移位结果:"+(c>>d));
    }
    }
    运行结果
    a 的移位结果:4
    c 的移位结果:-4
    分析上面的程序段:
    a 的值是16,转换成二进制是00010000,让它右移两位成00000100 即4。
    c 的值是-16,转换成二进制是11101111,让它右移一位成11111011 即-4。

  • 相关阅读:
    每日记载内容总结33
    华为机试-尼科彻斯定理
    华为机试-求最大连续bit数
    华为机试-合法IP
    华为机试-票数统计
    华为机试-等差数列
    华为机试-自守数
    中序表达式转后序表式式
    华为机考 给你一个N*M的矩阵,每个位置的值是0或1,求一个面积最大的子矩阵,这个矩阵必须是一个正方形,且里面只能由1构成,输出最大的正方形边长。其中n,m<=400;
    华为机试-求解立方根
  • 原文地址:https://www.cnblogs.com/interdrp/p/5005302.html
Copyright © 2011-2022 走看看