xref: /aosp_15_r20/art/test/027-arithmetic/src/Main.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2006 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker /**
18*795d594fSAndroid Build Coastguard Worker  * Test arithmetic operations.
19*795d594fSAndroid Build Coastguard Worker  */
20*795d594fSAndroid Build Coastguard Worker public class Main {
21*795d594fSAndroid Build Coastguard Worker 
shiftTest1()22*795d594fSAndroid Build Coastguard Worker     static void shiftTest1()
23*795d594fSAndroid Build Coastguard Worker     {
24*795d594fSAndroid Build Coastguard Worker         final int[] mBytes = {
25*795d594fSAndroid Build Coastguard Worker             0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
26*795d594fSAndroid Build Coastguard Worker         };
27*795d594fSAndroid Build Coastguard Worker         long l;
28*795d594fSAndroid Build Coastguard Worker         int i1, i2;
29*795d594fSAndroid Build Coastguard Worker 
30*795d594fSAndroid Build Coastguard Worker         i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
31*795d594fSAndroid Build Coastguard Worker         i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
32*795d594fSAndroid Build Coastguard Worker         l = i1 | ((long)i2 << 32);
33*795d594fSAndroid Build Coastguard Worker 
34*795d594fSAndroid Build Coastguard Worker 	System.out.println("values are " + Integer.toHexString(i1)
35*795d594fSAndroid Build Coastguard Worker 	    + " and " + Integer.toHexString(i2));
36*795d594fSAndroid Build Coastguard Worker 
37*795d594fSAndroid Build Coastguard Worker         System.out.println("First l is " + Long.toHexString(l));
38*795d594fSAndroid Build Coastguard Worker 
39*795d594fSAndroid Build Coastguard Worker         l = (long)mBytes[0]
40*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[1] << 8
41*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[2] << 16
42*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[3] << 24
43*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[4] << 32
44*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[5] << 40
45*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[6] << 48
46*795d594fSAndroid Build Coastguard Worker             | (long)mBytes[7] << 56;
47*795d594fSAndroid Build Coastguard Worker 
48*795d594fSAndroid Build Coastguard Worker         System.out.println("Second l is " + Long.toHexString(l));
49*795d594fSAndroid Build Coastguard Worker     }
50*795d594fSAndroid Build Coastguard Worker 
shiftTest2()51*795d594fSAndroid Build Coastguard Worker     static void shiftTest2()
52*795d594fSAndroid Build Coastguard Worker     {
53*795d594fSAndroid Build Coastguard Worker         long    a = 0x11;
54*795d594fSAndroid Build Coastguard Worker         long    b = 0x22;
55*795d594fSAndroid Build Coastguard Worker         long    c = 0x33;
56*795d594fSAndroid Build Coastguard Worker         long    d = 0x44;
57*795d594fSAndroid Build Coastguard Worker         long    e = 0x55;
58*795d594fSAndroid Build Coastguard Worker         long    f = 0x66;
59*795d594fSAndroid Build Coastguard Worker         long    g = 0x77;
60*795d594fSAndroid Build Coastguard Worker         long    h = 0x88;
61*795d594fSAndroid Build Coastguard Worker 
62*795d594fSAndroid Build Coastguard Worker         long    result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
63*795d594fSAndroid Build Coastguard Worker                          (e << 24) | (f << 16) | (g << 8) | h);
64*795d594fSAndroid Build Coastguard Worker 
65*795d594fSAndroid Build Coastguard Worker         System.out.println("shiftTest2 l is " + Long.toHexString(result));
66*795d594fSAndroid Build Coastguard Worker     }
67*795d594fSAndroid Build Coastguard Worker 
convTest()68*795d594fSAndroid Build Coastguard Worker     static void convTest()
69*795d594fSAndroid Build Coastguard Worker     {
70*795d594fSAndroid Build Coastguard Worker         float f;
71*795d594fSAndroid Build Coastguard Worker         double d;
72*795d594fSAndroid Build Coastguard Worker         int i;
73*795d594fSAndroid Build Coastguard Worker         long l;
74*795d594fSAndroid Build Coastguard Worker 
75*795d594fSAndroid Build Coastguard Worker         /* float --> int */
76*795d594fSAndroid Build Coastguard Worker         f = 1234.5678f;
77*795d594fSAndroid Build Coastguard Worker         i = (int) f;
78*795d594fSAndroid Build Coastguard Worker         System.out.println("f=" + f + " --> i=" + i);
79*795d594fSAndroid Build Coastguard Worker 
80*795d594fSAndroid Build Coastguard Worker         f = -1234.5678f;
81*795d594fSAndroid Build Coastguard Worker         i = (int) f;
82*795d594fSAndroid Build Coastguard Worker         System.out.println("f=" + f + " --> i=" + i);
83*795d594fSAndroid Build Coastguard Worker 
84*795d594fSAndroid Build Coastguard Worker         /* double --> int */
85*795d594fSAndroid Build Coastguard Worker         d = 1234.5678;
86*795d594fSAndroid Build Coastguard Worker         i = (int) d;
87*795d594fSAndroid Build Coastguard Worker         System.out.println("d=" + d + " --> i=" + i);
88*795d594fSAndroid Build Coastguard Worker 
89*795d594fSAndroid Build Coastguard Worker         d = -1234.5678;
90*795d594fSAndroid Build Coastguard Worker         i = (int) d;
91*795d594fSAndroid Build Coastguard Worker         System.out.println("d=" + d + " --> i=" + i);
92*795d594fSAndroid Build Coastguard Worker 
93*795d594fSAndroid Build Coastguard Worker         /* double --> long */
94*795d594fSAndroid Build Coastguard Worker         d = 5678956789.0123;
95*795d594fSAndroid Build Coastguard Worker         l = (long) d;
96*795d594fSAndroid Build Coastguard Worker         System.out.println("d=" + d + " --> l=" + l);
97*795d594fSAndroid Build Coastguard Worker 
98*795d594fSAndroid Build Coastguard Worker         d = -5678956789.0123;
99*795d594fSAndroid Build Coastguard Worker         l = (long) d;
100*795d594fSAndroid Build Coastguard Worker         System.out.println("d=" + d + " --> l=" + l);
101*795d594fSAndroid Build Coastguard Worker 
102*795d594fSAndroid Build Coastguard Worker         /* int --> long */
103*795d594fSAndroid Build Coastguard Worker         i = 7654;
104*795d594fSAndroid Build Coastguard Worker         l = (long) i;
105*795d594fSAndroid Build Coastguard Worker         System.out.println("i=" + i + " --> l=" + l);
106*795d594fSAndroid Build Coastguard Worker 
107*795d594fSAndroid Build Coastguard Worker         i = -7654;
108*795d594fSAndroid Build Coastguard Worker         l = (long) i;
109*795d594fSAndroid Build Coastguard Worker         System.out.println("i=" + i + " --> l=" + l);
110*795d594fSAndroid Build Coastguard Worker 
111*795d594fSAndroid Build Coastguard Worker         /* long --> int (with truncation) */
112*795d594fSAndroid Build Coastguard Worker         l = 5678956789L;
113*795d594fSAndroid Build Coastguard Worker         i = (int) l;
114*795d594fSAndroid Build Coastguard Worker         System.out.println("l=" + l + " --> i=" + i);
115*795d594fSAndroid Build Coastguard Worker 
116*795d594fSAndroid Build Coastguard Worker         l = -5678956789L;
117*795d594fSAndroid Build Coastguard Worker         i = (int) l;
118*795d594fSAndroid Build Coastguard Worker         System.out.println("l=" + l + " --> i=" + i);
119*795d594fSAndroid Build Coastguard Worker 
120*795d594fSAndroid Build Coastguard Worker         /* int --> float */
121*795d594fSAndroid Build Coastguard Worker         i = 1234;
122*795d594fSAndroid Build Coastguard Worker         f = (float) i;
123*795d594fSAndroid Build Coastguard Worker         System.out.println("i=" + i + " --> f=" + f);
124*795d594fSAndroid Build Coastguard Worker 
125*795d594fSAndroid Build Coastguard Worker         i = -1234;
126*795d594fSAndroid Build Coastguard Worker         f = (float) i;
127*795d594fSAndroid Build Coastguard Worker         System.out.println("i=" + i + " --> f=" + f);
128*795d594fSAndroid Build Coastguard Worker     }
129*795d594fSAndroid Build Coastguard Worker 
unsignedShiftTest()130*795d594fSAndroid Build Coastguard Worker     static void unsignedShiftTest()
131*795d594fSAndroid Build Coastguard Worker     {
132*795d594fSAndroid Build Coastguard Worker         byte b = -4;
133*795d594fSAndroid Build Coastguard Worker         short s = -4;
134*795d594fSAndroid Build Coastguard Worker         char c = 0xfffc;
135*795d594fSAndroid Build Coastguard Worker         int i = -4;
136*795d594fSAndroid Build Coastguard Worker 
137*795d594fSAndroid Build Coastguard Worker         b >>>= 4;
138*795d594fSAndroid Build Coastguard Worker         s >>>= 4;
139*795d594fSAndroid Build Coastguard Worker         c >>>= 4;
140*795d594fSAndroid Build Coastguard Worker         i >>>= 4;
141*795d594fSAndroid Build Coastguard Worker 
142*795d594fSAndroid Build Coastguard Worker         System.out.println("b=" + b + ", s=" + s + ", c=" + (int)c + ", i=" +i);
143*795d594fSAndroid Build Coastguard Worker         System.out.println("b=0x" + Integer.toHexString((int)b)
144*795d594fSAndroid Build Coastguard Worker             + ", s=0x" + Integer.toHexString((int)s)
145*795d594fSAndroid Build Coastguard Worker             + ", c=0x" + Integer.toHexString((int)c)
146*795d594fSAndroid Build Coastguard Worker             + ", i=0x" + Integer.toHexString(i));
147*795d594fSAndroid Build Coastguard Worker     }
148*795d594fSAndroid Build Coastguard Worker 
main(String[] args)149*795d594fSAndroid Build Coastguard Worker     public static void main(String[] args) {
150*795d594fSAndroid Build Coastguard Worker         convTest();
151*795d594fSAndroid Build Coastguard Worker         shiftTest1();
152*795d594fSAndroid Build Coastguard Worker         shiftTest2();
153*795d594fSAndroid Build Coastguard Worker         unsignedShiftTest();
154*795d594fSAndroid Build Coastguard Worker     }
155*795d594fSAndroid Build Coastguard Worker }
156