blob: 4d0f74e7d14e1dfcc01425225874bc2c2d54d8c2 [file] [log] [blame]
jeffhao5d1ac922011-09-29 17:41:15 -07001// Copyright 2006 The Android Open Source Project
2
3/**
4 * Test arithmetic operations.
5 */
6public class Main {
7
8 static void shiftTest1()
9 {
10 final int[] mBytes = {
11 0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
12 };
13 long l;
14 int i1, i2;
15
16 i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
17 i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
18 l = i1 | ((long)i2 << 32);
19
20 System.out.println("values are " + Integer.toHexString(i1)
21 + " and " + Integer.toHexString(i2));
22
23 System.out.println("First l is " + Long.toHexString(l));
24
25 l = (long)mBytes[0]
26 | (long)mBytes[1] << 8
27 | (long)mBytes[2] << 16
28 | (long)mBytes[3] << 24
29 | (long)mBytes[4] << 32
30 | (long)mBytes[5] << 40
31 | (long)mBytes[6] << 48
32 | (long)mBytes[7] << 56;
33
34 System.out.println("Second l is " + Long.toHexString(l));
35 }
36
37 static void shiftTest2()
38 {
39 long a = 0x11;
40 long b = 0x22;
41 long c = 0x33;
42 long d = 0x44;
43 long e = 0x55;
44 long f = 0x66;
45 long g = 0x77;
46 long h = 0x88;
47
48 long result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
49 (e << 24) | (f << 16) | (g << 8) | h);
50
51 System.out.println("shiftTest2 l is " + Long.toHexString(result));
52 }
53
54 static void convTest()
55 {
56 float f;
57 double d;
58 int i;
59 long l;
60
61 /* float --> int */
62 f = 1234.5678f;
63 i = (int) f;
64 System.out.println("f=" + f + " --> i=" + i);
65
66 f = -1234.5678f;
67 i = (int) f;
68 System.out.println("f=" + f + " --> i=" + i);
69
70 /* double --> int */
71 d = 1234.5678;
72 i = (int) d;
73 System.out.println("d=" + d + " --> i=" + i);
74
75 d = -1234.5678;
76 i = (int) d;
77 System.out.println("d=" + d + " --> i=" + i);
78
79 /* double --> long */
80 d = 5678956789.0123;
81 l = (long) d;
82 System.out.println("d=" + d + " --> l=" + l);
83
84 d = -5678956789.0123;
85 l = (long) d;
86 System.out.println("d=" + d + " --> l=" + l);
87
88 /* int --> long */
89 i = 7654;
90 l = (long) i;
91 System.out.println("i=" + i + " --> l=" + l);
92
93 i = -7654;
94 l = (long) i;
95 System.out.println("i=" + i + " --> l=" + l);
96
97 /* long --> int (with truncation) */
98 l = 5678956789L;
99 i = (int) l;
100 System.out.println("l=" + l + " --> i=" + i);
101
102 l = -5678956789L;
103 i = (int) l;
104 System.out.println("l=" + l + " --> i=" + i);
105
106 /* int --> float */
107 i = 1234;
108 f = (float) i;
109 System.out.println("i=" + i + " --> f=" + f);
110
111 i = -1234;
112 f = (float) i;
113 System.out.println("i=" + i + " --> f=" + f);
114 }
115
116 static void unsignedShiftTest()
117 {
118 byte b = -4;
119 short s = -4;
120 char c = 0xfffc;
121 int i = -4;
122
123 b >>>= 4;
124 s >>>= 4;
125 c >>>= 4;
126 i >>>= 4;
127
128 System.out.println("b=" + b + ", s=" + s + ", c=" + (int)c + ", i=" +i);
129 System.out.println("b=0x" + Integer.toHexString((int)b)
130 + ", s=0x" + Integer.toHexString((int)s)
131 + ", c=0x" + Integer.toHexString((int)c)
132 + ", i=0x" + Integer.toHexString(i));
133 }
134
135 public static void main(String[] args) {
136 convTest();
137 shiftTest1();
138 shiftTest2();
139 unsignedShiftTest();
140 }
141}