EN
Java - how to get int max and min value with bitwise operations?
2 points
Short solution:
xxxxxxxxxx
1
int MAX_VALUE = -1 >>> 1;
2
int MIN_VALUE = -1 << 31;
3
4
System.out.println(MAX_VALUE); // 2147483647
5
System.out.println(MIN_VALUE); // -2147483648
Other short solution:
xxxxxxxxxx
1
int MAX_VALUE = ~0 >>> 1;
2
int MIN_VALUE = ~MAX_VALUE;
3
4
System.out.println(MAX_VALUE); // 2147483647
5
System.out.println(MIN_VALUE); // -2147483648
xxxxxxxxxx
1
public class Example1 {
2
3
public static void main(String[] args) {
4
5
int MAX_VALUE = -1 >>> 1;
6
int MIN_VALUE = -1 << 31;
7
8
System.out.println(MAX_VALUE); // 2147483647
9
System.out.println(MIN_VALUE); // -2147483648
10
11
// 01111111111111111111111111111111
12
System.out.println( toBinaryWithLeadingZeros(MAX_VALUE) );
13
14
// 10000000000000000000000000000000
15
System.out.println( toBinaryWithLeadingZeros(MIN_VALUE) );
16
}
17
18
private static String toBinaryWithLeadingZeros(int MAX_VALUE) {
19
String binaryString = Integer.toBinaryString(MAX_VALUE);
20
return String.format("%32s", binaryString).replace(' ', '0');
21
}
22
}
xxxxxxxxxx
1
public class Example2 {
2
3
public static void main(String[] args) {
4
5
int MAX_VALUE = ~0 >>> 1;
6
int MIN_VALUE = ~MAX_VALUE;
7
8
System.out.println(MAX_VALUE); // 2147483647
9
System.out.println(MIN_VALUE); // -2147483648
10
11
// 01111111111111111111111111111111
12
System.out.println( toBinaryWithLeadingZeros(MAX_VALUE) );
13
14
// 10000000000000000000000000000000
15
System.out.println( toBinaryWithLeadingZeros(MIN_VALUE) );
16
}
17
18
private static String toBinaryWithLeadingZeros(int MAX_VALUE) {
19
String binaryString = Integer.toBinaryString(MAX_VALUE);
20
return String.format("%32s", binaryString).replace(' ', '0');
21
}
22
}
xxxxxxxxxx
1
public class Example3 {
2
3
public static void main(String[] args) {
4
5
System.out.println( Integer.MAX_VALUE ); // 2147483647
6
System.out.println( Integer.MIN_VALUE ); // -2147483648
7
}
8
}