// --------------------
// Representations.java
// --------------------

final class RepresentationsTest {
    public static void main (String[] args) {
        {
        final int i = 2;
        assert i == 2;
        assert i == 02;
        assert i == 0x2;
        assert Integer.toBinaryString(i).equals("10");
        assert Integer.toOctalString(i).equals("2");
        assert Integer.valueOf(i).toString().equals("2");
        assert Integer.toHexString(i).equals("2");
        }

        {
        final int i = 17;
        assert i == 17;
        assert i == 021;
        assert i == 0x11;
        assert Integer.toBinaryString(i).equals("10001");
        assert Integer.toOctalString(i).equals("21");
        assert Integer.valueOf(i).toString().equals("17");
        assert Integer.toHexString(i).equals("11");
        }

        {
        final int i = -2;
        assert i == -2;
        assert i == -02;
        assert i == 037777777776;
        assert i == -0x2;
        assert i == 0xfffffffe;
        assert Integer.toBinaryString(i).equals("11111111111111111111111111111110");
        assert Integer.toOctalString(i).equals("37777777776");
        assert Integer.valueOf(i).toString().equals("-2");
        assert Integer.toHexString(i).equals("fffffffe");
        }

        {
        final int i = 2;
        final int j = ~i + 1;
        assert i ==  2;
        assert j == -2;
        assert Integer.toBinaryString(i).equals(                              "10");
        assert Integer.toBinaryString(j).equals("11111111111111111111111111111110");
        }

        {
        final int i = 2;
        final int j = i << 3;
        assert i ==  2;
        assert j == 16;
        assert Integer.toBinaryString(i).equals(   "10");
        assert Integer.toBinaryString(j).equals("10000");
        final int k = j >> 3;
        assert j == 16;
        assert k ==  2;
        assert Integer.toBinaryString(j).equals("10000");
        assert Integer.toBinaryString(k).equals(   "10");
        }

        {
        final int i = -2;
        final int j = i << 3;
        assert i ==  -2;
        assert j == -16;
        assert Integer.toBinaryString(i).equals("11111111111111111111111111111110");
        assert Integer.toBinaryString(j).equals("11111111111111111111111111110000");
        final int k = j >> 3;
        assert j == -16;
        assert k == -2;
        assert Integer.toBinaryString(j).equals("11111111111111111111111111110000");
        assert Integer.toBinaryString(k).equals("11111111111111111111111111111110");
        }

        {
        final int i = -2;
        final int j = i << 3;
        assert i ==  -2;
        assert j == -16;
        assert Integer.toBinaryString(i).equals("11111111111111111111111111111110");
        assert Integer.toBinaryString(j).equals("11111111111111111111111111110000");
        final int k = j >>> 3;
        assert j == -16;
        assert k == 536870910;
        assert Integer.toBinaryString(j).equals("11111111111111111111111111110000");
        assert Integer.toBinaryString(k).equals(   "11111111111111111111111111110");
        }

        {
        final char c = Character.MAX_VALUE;
        final char d = c >>  3;
        final char e = c >>> 3;
        assert Long.toBinaryString((long) c).equals("1111111111111111");
        assert Long.toBinaryString((long) d).equals(   "1111111111111");
        assert Long.toBinaryString((long) e).equals(   "1111111111111");
        }

        {
        short i = 1;
        while (i > 0)
            ++i;
        assert i == Short.MIN_VALUE;
        assert i == -32768;
        assert i == (short) 0100000;
        assert i == (short) 0x8000;
         }

        {
        int i = Integer.MAX_VALUE;
        ++i;
        assert i == Integer.MIN_VALUE;
        assert i == -2147483648;
        assert i == 020000000000;
        assert i == 0x80000000;
        assert Integer.toBinaryString(i).equals("10000000000000000000000000000000");
        assert Integer.toOctalString(i).equals("20000000000");
        assert Integer.valueOf(i).toString().equals("-2147483648");
        assert Integer.toHexString(i).equals("80000000");
        }

        {
        int i = Integer.MIN_VALUE;
        --i;
        assert i == Integer.MAX_VALUE;
        assert i == 2147483647;
        assert i == 017777777777;
        assert i == 0x7fffffff;
        assert Integer.toBinaryString(i).equals("1111111111111111111111111111111");
        assert Integer.toOctalString(i).equals("17777777777");
        assert Integer.valueOf(i).toString().equals("2147483647");
        assert Integer.toHexString(i).equals("7fffffff");
        }

        System.out.println("Done.");}}


syntax highlighted by Code2HTML, v. 0.9.1