算术左移运算符
按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
语法格式:
需要移位的数字 << 移位的次数
例如: 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次方
时间: 2024-10-09 21:45:27