/*
|
* Copyright (C) 2006 The Android Open Source Project
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
/**
|
* Test arithmetic operations.
|
*/
|
public class Main {
|
|
static void shiftTest1()
|
{
|
final int[] mBytes = {
|
0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
|
};
|
long l;
|
int i1, i2;
|
|
i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
|
i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
|
l = i1 | ((long)i2 << 32);
|
|
System.out.println("values are " + Integer.toHexString(i1)
|
+ " and " + Integer.toHexString(i2));
|
|
System.out.println("First l is " + Long.toHexString(l));
|
|
l = (long)mBytes[0]
|
| (long)mBytes[1] << 8
|
| (long)mBytes[2] << 16
|
| (long)mBytes[3] << 24
|
| (long)mBytes[4] << 32
|
| (long)mBytes[5] << 40
|
| (long)mBytes[6] << 48
|
| (long)mBytes[7] << 56;
|
|
System.out.println("Second l is " + Long.toHexString(l));
|
}
|
|
static void shiftTest2()
|
{
|
long a = 0x11;
|
long b = 0x22;
|
long c = 0x33;
|
long d = 0x44;
|
long e = 0x55;
|
long f = 0x66;
|
long g = 0x77;
|
long h = 0x88;
|
|
long result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
|
(e << 24) | (f << 16) | (g << 8) | h);
|
|
System.out.println("shiftTest2 l is " + Long.toHexString(result));
|
}
|
|
static void convTest()
|
{
|
float f;
|
double d;
|
int i;
|
long l;
|
|
/* float --> int */
|
f = 1234.5678f;
|
i = (int) f;
|
System.out.println("f=" + f + " --> i=" + i);
|
|
f = -1234.5678f;
|
i = (int) f;
|
System.out.println("f=" + f + " --> i=" + i);
|
|
/* double --> int */
|
d = 1234.5678;
|
i = (int) d;
|
System.out.println("d=" + d + " --> i=" + i);
|
|
d = -1234.5678;
|
i = (int) d;
|
System.out.println("d=" + d + " --> i=" + i);
|
|
/* double --> long */
|
d = 5678956789.0123;
|
l = (long) d;
|
System.out.println("d=" + d + " --> l=" + l);
|
|
d = -5678956789.0123;
|
l = (long) d;
|
System.out.println("d=" + d + " --> l=" + l);
|
|
/* int --> long */
|
i = 7654;
|
l = (long) i;
|
System.out.println("i=" + i + " --> l=" + l);
|
|
i = -7654;
|
l = (long) i;
|
System.out.println("i=" + i + " --> l=" + l);
|
|
/* long --> int (with truncation) */
|
l = 5678956789L;
|
i = (int) l;
|
System.out.println("l=" + l + " --> i=" + i);
|
|
l = -5678956789L;
|
i = (int) l;
|
System.out.println("l=" + l + " --> i=" + i);
|
|
/* int --> float */
|
i = 1234;
|
f = (float) i;
|
System.out.println("i=" + i + " --> f=" + f);
|
|
i = -1234;
|
f = (float) i;
|
System.out.println("i=" + i + " --> f=" + f);
|
}
|
|
static void unsignedShiftTest()
|
{
|
byte b = -4;
|
short s = -4;
|
char c = 0xfffc;
|
int i = -4;
|
|
b >>>= 4;
|
s >>>= 4;
|
c >>>= 4;
|
i >>>= 4;
|
|
System.out.println("b=" + b + ", s=" + s + ", c=" + (int)c + ", i=" +i);
|
System.out.println("b=0x" + Integer.toHexString((int)b)
|
+ ", s=0x" + Integer.toHexString((int)s)
|
+ ", c=0x" + Integer.toHexString((int)c)
|
+ ", i=0x" + Integer.toHexString(i));
|
}
|
|
public static void main(String[] args) {
|
convTest();
|
shiftTest1();
|
shiftTest2();
|
unsignedShiftTest();
|
}
|
}
|