EN
Java - how to get int max and min value with bitwise operations?
2
points
Short solution:
int MAX_VALUE = -1 >>> 1;
int MIN_VALUE = -1 << 31;
System.out.println(MAX_VALUE); // 2147483647
System.out.println(MIN_VALUE); // -2147483648
Other short solution:
int MAX_VALUE = ~0 >>> 1;
int MIN_VALUE = ~MAX_VALUE;
System.out.println(MAX_VALUE); // 2147483647
System.out.println(MIN_VALUE); // -2147483648
1. Using bit shift operators
public class Example1 {
public static void main(String[] args) {
int MAX_VALUE = -1 >>> 1;
int MIN_VALUE = -1 << 31;
System.out.println(MAX_VALUE); // 2147483647
System.out.println(MIN_VALUE); // -2147483648
// 01111111111111111111111111111111
System.out.println( toBinaryWithLeadingZeros(MAX_VALUE) );
// 10000000000000000000000000000000
System.out.println( toBinaryWithLeadingZeros(MIN_VALUE) );
}
private static String toBinaryWithLeadingZeros(int MAX_VALUE) {
String binaryString = Integer.toBinaryString(MAX_VALUE);
return String.format("%32s", binaryString).replace(' ', '0');
}
}
2. Using bit shift and NOT operators
public class Example2 {
public static void main(String[] args) {
int MAX_VALUE = ~0 >>> 1;
int MIN_VALUE = ~MAX_VALUE;
System.out.println(MAX_VALUE); // 2147483647
System.out.println(MIN_VALUE); // -2147483648
// 01111111111111111111111111111111
System.out.println( toBinaryWithLeadingZeros(MAX_VALUE) );
// 10000000000000000000000000000000
System.out.println( toBinaryWithLeadingZeros(MIN_VALUE) );
}
private static String toBinaryWithLeadingZeros(int MAX_VALUE) {
String binaryString = Integer.toBinaryString(MAX_VALUE);
return String.format("%32s", binaryString).replace(' ', '0');
}
}
3. Stanrad way of getting Integer MAX and MIN value in java
public class Example3 {
public static void main(String[] args) {
System.out.println( Integer.MAX_VALUE ); // 2147483647
System.out.println( Integer.MIN_VALUE ); // -2147483648
}
}