Java移位运算之算术右移位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java移位运算之算术右移位相关的知识,希望对你有一定的参考价值。
算术左移运算符
>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1.
语法格式:
需要移位的数字 >> 移位的次数
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]
以上是关于Java移位运算之算术右移位的主要内容,如果未能解决你的问题,请参考以下文章