算術左移運算符java
>>運算規則:按二進制形式把全部的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1.
語法格式:
須要移位的數字 >> 移位的次數ide
package com.zzwx.test.shifting; public class MainRight { public static void main(String[] args) { for (int p = 50; p < 55; p++) { System.out.println("////////////算術右移位 - " + p + "/////////////"); for (int n = 1; n <= 4; n++) { System.out.println("須要移位的數字 : " + p + " \t 轉換二進制 : " + toBinaryString(p) + " \t 移位量 : " + n + " \t 移位後的二進制 : " + shiftToBinaryRight(toBinaryString(p), n) + " \t value : " + (p >> n)); } System.out.println("////////////算術右移位 - " + p + "/////////////"); } System.out .println("算術右移位 ------> p >> n = [p / 2的n次方 >= 1 --> 取整] || [p / 2的n次方 < 1 --> 0]"); } /** * 獲取當前數字的二進制 * * @param num * int數字 * @return 二進制字符 */ public static String toBinaryString(int num) { return Integer.toBinaryString(num); } /** * 經過移位量獲取移位後的二進制 * * @param binaryStr * 須要移位的二進制 * @param shift * 偏移量 * @return 移位後的二進制 */ public static String shiftToBinaryRight(String binaryStr, int shift) { binaryStr = binaryStr.substring(0, binaryStr.length() - shift) +"."+ binaryStr.substring(binaryStr.length() - shift, binaryStr.length()); return binaryStr; } }
測試結果測試
////////////算術右移位 - 50///////////// 須要移位的數字 : 50 轉換二進制 : 110010 移位量 : 1 移位後的二進制 : 11001.0 value : 25 須要移位的數字 : 50 轉換二進制 : 110010 移位量 : 2 移位後的二進制 : 1100.10 value : 12 須要移位的數字 : 50 轉換二進制 : 110010 移位量 : 3 移位後的二進制 : 110.010 value : 6 須要移位的數字 : 50 轉換二進制 : 110010 移位量 : 4 移位後的二進制 : 11.0010 value : 3 ////////////算術右移位 - 50///////////// ////////////算術右移位 - 51///////////// 須要移位的數字 : 51 轉換二進制 : 110011 移位量 : 1 移位後的二進制 : 11001.1 value : 25 須要移位的數字 : 51 轉換二進制 : 110011 移位量 : 2 移位後的二進制 : 1100.11 value : 12 須要移位的數字 : 51 轉換二進制 : 110011 移位量 : 3 移位後的二進制 : 110.011 value : 6 須要移位的數字 : 51 轉換二進制 : 110011 移位量 : 4 移位後的二進制 : 11.0011 value : 3 ////////////算術右移位 - 51///////////// ////////////算術右移位 - 52///////////// 須要移位的數字 : 52 轉換二進制 : 110100 移位量 : 1 移位後的二進制 : 11010.0 value : 26 須要移位的數字 : 52 轉換二進制 : 110100 移位量 : 2 移位後的二進制 : 1101.00 value : 13 須要移位的數字 : 52 轉換二進制 : 110100 移位量 : 3 移位後的二進制 : 110.100 value : 6 須要移位的數字 : 52 轉換二進制 : 110100 移位量 : 4 移位後的二進制 : 11.0100 value : 3 ////////////算術右移位 - 52///////////// ////////////算術右移位 - 53///////////// 須要移位的數字 : 53 轉換二進制 : 110101 移位量 : 1 移位後的二進制 : 11010.1 value : 26 須要移位的數字 : 53 轉換二進制 : 110101 移位量 : 2 移位後的二進制 : 1101.01 value : 13 須要移位的數字 : 53 轉換二進制 : 110101 移位量 : 3 移位後的二進制 : 110.101 value : 6 須要移位的數字 : 53 轉換二進制 : 110101 移位量 : 4 移位後的二進制 : 11.0101 value : 3 ////////////算術右移位 - 53///////////// ////////////算術右移位 - 54///////////// 須要移位的數字 : 54 轉換二進制 : 110110 移位量 : 1 移位後的二進制 : 11011.0 value : 27 須要移位的數字 : 54 轉換二進制 : 110110 移位量 : 2 移位後的二進制 : 1101.10 value : 13 須要移位的數字 : 54 轉換二進制 : 110110 移位量 : 3 移位後的二進制 : 110.110 value : 6 須要移位的數字 : 54 轉換二進制 : 110110 移位量 : 4 移位後的二進制 : 11.0110 value : 3 ////////////算術右移位 - 54///////////// 算術右移位 ------> p >> n = [p / 2的n次方 >= 1 --> 取整] || [p / 2的n次方 < 1 --> 0]