本贴最后更新于 228 天前,其中的信息可能已经时移世易

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 等,欢迎大家加入,贡献开源。

    2748 引用 • 4352 回帖 • 639 关注
  • Java

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

    2111 引用 • 7063 回帖 • 1070 关注
  • number
    1 引用 • 1 回帖
感谢    关注    收藏    赞同    反对    举报    分享