forked from shuang790228/GeekTime-MathLecture-JavaCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLesson1_2.java
More file actions
71 lines (53 loc) · 2.34 KB
/
Lesson1_2.java
File metadata and controls
71 lines (53 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import java.math.BigInteger;
public class Lesson1_2 {
/**
* @Description: 向左移位
* @param num-等待移位的十进制数, m-向左移的位数
* @return int-移位后的十进制数
*/
public static int leftShift(int num, int m) {
System.out.println(decimalToBinary(num << m));
return num << m;
}
/**
* @Description: 向右移位
* @param num-等待移位的十进制数, m-向右移的位数
* @return int-移位后的十进制数
*/
public static String decimalToBinary(int decimalSource) {
BigInteger bi = new BigInteger(String.valueOf(decimalSource)); //转换成BigInteger类型,默认是十进制
return bi.toString(2); //参数2指定的是转化成二进制
}
public static int binaryToDecimal(String binarySource) {
BigInteger bi = new BigInteger(binarySource, 2); //转换为BigInteger类型,参数2指定的是二进制
return Integer.parseInt(bi.toString()); //默认转换成十进制
}
public static int rightShift(int num, int m) {
System.out.println(decimalToBinary(num >>> m));
return num >>> m;
}
public static int rightShift2(int num, int m) {
System.out.println(decimalToBinary(num >> m));
return num >> m;
}
public static void main(String[] args) {
int num = -53;
int m = 1;
System.out.println(String.format("数字%d的二进制向左移%d位是%d", num, m, Lesson1_2.leftShift(num, m))); //测试向左移位
System.out.println(String.format("数字%d的二进制向右移%d位是%d", num, m, Lesson1_2.rightShift(num, m))); //测试向右移位
System.out.println(String.format("数字%d的二进制向右移2 %d位是%d", num, m, Lesson1_2.rightShift2(num, m))); //测试向右移位
System.out.println(Integer.MAX_VALUE);
System.out.println();
m = 3;
System.out.println(String.format("数字%d的二进制向左移%d位是%d", num, m, Lesson1_2.leftShift(num, m))); //测试向左移位
System.out.println(String.format("数字%d的二进制向右移%d位是%d", num, m, Lesson1_2.rightShift(num, m))); //测试向右移位
System.out.println(decimalToBinary(1 << 31));
System.out.println(1 << 31);
System.out.println(1 << 30);
System.out.println((1 << 31) - 1);
System.out.println(64 >> 1);
System.out.println(-64 >> 1);
System.out.println(-64 >>> 1);
System.out.println(Integer.MAX_VALUE);
}
}