Integer.toBinaryString 2006/12/19
2006/12/19


public class TestInteger {
public static void main(String[] args) {
printBinaryString(Integer.MIN_VALUE);
printBinaryString(Integer.MAX_VALUE);
printBinaryString(0);
printBinaryString(-1);
printBinaryString(1);
printBinaryString(2);
printBinaryString(-2);
}

public static void printBinaryString(int i) {
System.out.println("[" + i + "] " + Integer.toBinaryString(i));
}
}



結果
[-2147483648] 10000000000000000000000000000000
[2147483647] 1111111111111111111111111111111
[0] 0
[-1] 11111111111111111111111111111111
[1] 1
[2] 10
[-2] 11111111111111111111111111111110


IntegerのtoBinaryStringメソッドは32ビット幅で表示してくれるわけではないので、
整数のビット表示をするプログラムを参考にして表示してみます。


public class TestInteger {
public static void main(String[] args) {
printBinaryString(Integer.MIN_VALUE);
printBinaryString(Integer.MAX_VALUE);
printBinaryString(0);
printBinaryString(-1);
printBinaryString(1);
printBinaryString(2);
printBinaryString(-2);
}

public static void printBinaryString(int i) {
System.out.println("[" + i + "] " + Integer.toBinaryString(i));
System.out.println("[" + i + "] " + toBinaryString(i));
}

public static String toBinaryString(int n){
final int shift31 = 1 << 31;

StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 32; i++) {
buffer.append(((n << i) & shift31) >>> 31);
}
return new String(buffer);
}
}


[-2147483648] 10000000000000000000000000000000
[-2147483648] 10000000000000000000000000000000
[2147483647] 1111111111111111111111111111111
[2147483647] 01111111111111111111111111111111
[0] 0
[0] 00000000000000000000000000000000
[-1] 11111111111111111111111111111111
[-1] 11111111111111111111111111111111
[1] 1
[1] 00000000000000000000000000000001
[2] 10
[2] 00000000000000000000000000000010
[-2] 11111111111111111111111111111110
[-2] 11111111111111111111111111111110



正直、ビット演算子は苦手です。Orz...

: