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