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