Java移位運算之算術右移位

算術左移運算符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]
相關文章
相關標籤/搜索