java右移位怎么算_Java移位运算之算术右移位

算术左移运算符

>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1.语法格式:需要移位的数字 >> 移位的次数

package com.zzwx.test.shifting;

public class MainRight {

public static void main(String[] args) {

for (int p = 50; 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次方  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次方  0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值