算术左移运算符java
按二进制形式把全部的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。ide
语法格式:
须要移位的数字 << 移位的次数
例如: 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; } }
测试结果spa
////////////算术左移位 - 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次方