java 中有三种移位运算符

<< : 左移运算符,num << 1, 相当于 num 乘以 2

 :     右移运算符,num >> 1,相当于num除以2

: 无符号右移,忽略符号位,空位都以 0 补齐

下面来看看这些移位运算都是怎样使用的

  package com.b510.test;

  /**
  * @author Xu Zhiwei
  * @create date:2018-07-10
  * @version 1.0
  */
  public class Test {
    public static void main(String[] args) {
      int number = 10;
      // 原始数二进制
      printInfo(number);
      number = number << 1;
      // 左移一位
      printInfo(number);
      number = number >> 1;
      // 右移一位
      printInfo(number);
    }

    /**
     * 输出一个 int 的二进制数
     * @param num
     */
    private static void printInfo(int num){
      System.out.println(Integer.toBinaryString(num));
    }
  }

运行结果为:

1010
10100
1010

我们把上面的结果对齐一下:

43210 位数

1010 十进制:10 原始数 number
10100 十进制:20 左移一位 number = number << 1;
1010 十进制:10 右移一位 number = number >> 1;

看了上面的 demo,现在是不是对左移和右移了解了很多了呢

对于:>>>

无符号右移,忽略符号位,空位都以 0 补齐

value >>> num -- num 指定要移位值 value 移动的位数。

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

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    3132 引用 • 3890 回帖 • 654 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2332 引用 • 6786 回帖 • 1182 关注
  • number
    1 引用 • 1 回帖
感谢    关注    收藏    赞同    反对    举报    分享