12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/*
22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2006 The Android Open Source Project
32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License.
62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at
72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software
112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and
142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License.
152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */
165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/**
185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Test arithmetic operations.
195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main {
215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void shiftTest1()
235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    {
245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        final int[] mBytes = {
255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        };
275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long l;
285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int i1, i2;
295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = i1 | ((long)i2 << 32);
335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao	System.out.println("values are " + Integer.toHexString(i1)
355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao	    + " and " + Integer.toHexString(i2));
365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("First l is " + Long.toHexString(l));
385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = (long)mBytes[0]
405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[1] << 8
415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[2] << 16
425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[3] << 24
435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[4] << 32
445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[5] << 40
455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[6] << 48
465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            | (long)mBytes[7] << 56;
475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("Second l is " + Long.toHexString(l));
495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void shiftTest2()
525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    {
535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    a = 0x11;
545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    b = 0x22;
555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    c = 0x33;
565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    d = 0x44;
575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    e = 0x55;
585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    f = 0x66;
595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    g = 0x77;
605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    h = 0x88;
615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long    result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao                         (e << 24) | (f << 16) | (g << 8) | h);
645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("shiftTest2 l is " + Long.toHexString(result));
665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void convTest()
695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    {
705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        float f;
715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        double d;
725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int i;
735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long l;
745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /* float --> int */
765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        f = 1234.5678f;
775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = (int) f;
785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("f=" + f + " --> i=" + i);
795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        f = -1234.5678f;
815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = (int) f;
825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("f=" + f + " --> i=" + i);
835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /* double --> int */
855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        d = 1234.5678;
865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = (int) d;
875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("d=" + d + " --> i=" + i);
885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        d = -1234.5678;
905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = (int) d;
915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("d=" + d + " --> i=" + i);
925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /* double --> long */
945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        d = 5678956789.0123;
955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = (long) d;
965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("d=" + d + " --> l=" + l);
975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        d = -5678956789.0123;
995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = (long) d;
1005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("d=" + d + " --> l=" + l);
1015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /* int --> long */
1035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = 7654;
1045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = (long) i;
1055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("i=" + i + " --> l=" + l);
1065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = -7654;
1085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = (long) i;
1095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("i=" + i + " --> l=" + l);
1105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /* long --> int (with truncation) */
1125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = 5678956789L;
1135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = (int) l;
1145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("l=" + l + " --> i=" + i);
1155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        l = -5678956789L;
1175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = (int) l;
1185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("l=" + l + " --> i=" + i);
1195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /* int --> float */
1215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = 1234;
1225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        f = (float) i;
1235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("i=" + i + " --> f=" + f);
1245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i = -1234;
1265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        f = (float) i;
1275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("i=" + i + " --> f=" + f);
1285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void unsignedShiftTest()
1315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    {
1325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        byte b = -4;
1335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        short s = -4;
1345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        char c = 0xfffc;
1355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int i = -4;
1365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        b >>>= 4;
1385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        s >>>= 4;
1395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        c >>>= 4;
1405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        i >>>= 4;
1415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("b=" + b + ", s=" + s + ", c=" + (int)c + ", i=" +i);
1435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("b=0x" + Integer.toHexString((int)b)
1445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            + ", s=0x" + Integer.toHexString((int)s)
1455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            + ", c=0x" + Integer.toHexString((int)c)
1465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            + ", i=0x" + Integer.toHexString(i));
1475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public static void main(String[] args) {
1505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        convTest();
1515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        shiftTest1();
1525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        shiftTest2();
1535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        unsignedShiftTest();
1545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
156