代码:
public static void main(String[] args) {
int num = 53;
int m = 1;
// 测试向左移位
System.out.println(String.format(" 数字 %d 的二进制向左移 %d 位是 %d", num, m, leftShift(num, m)));
// 测试向右移位
System.out.println(String.format(" 数字 %d 的二进制向右移 %d 位是 %d", num, m, rightShift(num, m)));
System.out.println();
m = 3;
// 测试向左移位
System.out.println(String.format(" 数字 %d 的二进制向左移 %d 位是 %d", num, m, leftShift(num, m)));
// 测试向右移位
System.out.println(String.format(" 数字 %d 的二进制向右移 %d 位是 %d", num, m, rightShift(num, m)));
}
/**
* @Description: 向左移位
* @param num- 等待移位的十进制数, m- 向左移的位数
* @return int- 移位后的十进制数
*/
public static int leftShift(int num, int m) {
return num << m;
}
/**
* @Description: 向右移位(逻辑右移:左边补 0 即可;算术右移:保持符号位不变,除符号位之外的右移一位并补符号位 1,补的 1 仍然在符号位之后。)
* @param num- 等待移位的十进制数, m- 向右移的位数
* @return int- 移位后的十进制数
*/
public static int rightShift(int num, int m) {
return num >>> m;
}
逻辑右移
算术右移
输出:
数字 53 的二进制向左移 1 位是 106
数字 53 的二进制向右移 1 位是 26
数字 53 的二进制向左移 3 位是 424
数字 53 的二进制向右移 3 位是 6
网友评论