Java移位运算之算术左移位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java移位运算之算术左移位相关的知识,希望对你有一定的参考价值。

算术左移运算符

    按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

语法格式:
  需要移位的数字 << 移位的次数
  例如: 3 << 2,则是将数字3左移2位

package com.zzwx.test.shifting;

public class Main {

	public static void main(String[] args) {

		for (int p = 1; p < 4; p++) {
			System.out.println("////////////算术左移位 - " + p + "/////////////");
			for (int n = 1; n <= 4; n++) {
				System.out.println("需要移位的数字 : " + p + " \t 转换二进制 : "
						+ toBinaryString(p) + " \t 移位量 : " + n
						+ " \t 移位后的二进制 : "
						+ shiftToBinaryLeft(toBinaryString(p), n)
						+ " \t value : " + (p << n));
			}
			System.out.println("////////////算术左移位 - " + p + "/////////////");
		}
		System.out.println("算术左移位 ------>    p << n = p * 2");
		System.out.println("\n\n\n");
	}

	/**
	 * 获取当前数字的二进制
	 * 
	 * @param num
	 *            int数字
	 * @return 二进制字符
	 */
	public static String toBinaryString(int num) {
		return Integer.toBinaryString(num);
	}

	/**
	 * 通过移位量获取移位后的二进制
	 * 
	 * @param binaryStr
	 *            需要移位的二进制
	 * @param shift
	 *            偏移量
	 * @return 移位后的二进制
	 */
	public static String shiftToBinaryLeft(String binaryStr, int shift) {
		for (int i = 0; i < shift; i++) {
			binaryStr += "0";
		}
		return binaryStr;
	}

}


测试结果

////////////算术左移位 - 1/////////////
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 1 	 移位后的二进制 : 10 	 value : 2
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 2 	 移位后的二进制 : 100 	 value : 4
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 3 	 移位后的二进制 : 1000 	 value : 8
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 4 	 移位后的二进制 : 10000 	 value : 16
////////////算术左移位 - 1/////////////
////////////算术左移位 - 2/////////////
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 1 	 移位后的二进制 : 100 	 value : 4
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 2 	 移位后的二进制 : 1000 	 value : 8
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 3 	 移位后的二进制 : 10000 	 value : 16
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 4 	 移位后的二进制 : 100000 	 value : 32
////////////算术左移位 - 2/////////////
////////////算术左移位 - 3/////////////
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 1 	 移位后的二进制 : 110 	 value : 6
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 2 	 移位后的二进制 : 1100 	 value : 12
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 3 	 移位后的二进制 : 11000 	 value : 24
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 4 	 移位后的二进制 : 110000 	 value : 48
////////////算术左移位 - 3/////////////
算术左移位 ------>    p << n = p * 2 的n次方



以上是关于Java移位运算之算术左移位的主要内容,如果未能解决你的问题,请参考以下文章

java移位运算

二进制算术移位和逻辑移位运算,及移位运算对数据的影响(详解及过程推导)

C语言深度剖析深入理解C语言中的移位操作符(代码+图解)

java移位运算

转《python 位操作符 左移和右移 运算》

操作符总结