12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2006 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/** 185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Test arithmetic operations. 195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main { 215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void shiftTest1() 235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao { 245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao final int[] mBytes = { 255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb 265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao }; 275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long l; 285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int i1, i2; 295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24; 315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24; 325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = i1 | ((long)i2 << 32); 335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("values are " + Integer.toHexString(i1) 355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao + " and " + Integer.toHexString(i2)); 365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("First l is " + Long.toHexString(l)); 385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = (long)mBytes[0] 405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[1] << 8 415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[2] << 16 425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[3] << 24 435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[4] << 32 445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[5] << 40 455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[6] << 48 465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao | (long)mBytes[7] << 56; 475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("Second l is " + Long.toHexString(l)); 495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void shiftTest2() 525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao { 535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long a = 0x11; 545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long b = 0x22; 555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long c = 0x33; 565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long d = 0x44; 575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long e = 0x55; 585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long f = 0x66; 595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long g = 0x77; 605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long h = 0x88; 615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) | 635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao (e << 24) | (f << 16) | (g << 8) | h); 645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("shiftTest2 l is " + Long.toHexString(result)); 665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void convTest() 695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao { 705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao float f; 715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao double d; 725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int i; 735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long l; 745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* float --> int */ 765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao f = 1234.5678f; 775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = (int) f; 785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("f=" + f + " --> i=" + i); 795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao f = -1234.5678f; 815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = (int) f; 825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("f=" + f + " --> i=" + i); 835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* double --> int */ 855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao d = 1234.5678; 865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = (int) d; 875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("d=" + d + " --> i=" + i); 885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao d = -1234.5678; 905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = (int) d; 915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("d=" + d + " --> i=" + i); 925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* double --> long */ 945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao d = 5678956789.0123; 955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = (long) d; 965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("d=" + d + " --> l=" + l); 975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao d = -5678956789.0123; 995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = (long) d; 1005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("d=" + d + " --> l=" + l); 1015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* int --> long */ 1035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = 7654; 1045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = (long) i; 1055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("i=" + i + " --> l=" + l); 1065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = -7654; 1085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = (long) i; 1095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("i=" + i + " --> l=" + l); 1105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* long --> int (with truncation) */ 1125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = 5678956789L; 1135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = (int) l; 1145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("l=" + l + " --> i=" + i); 1155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao l = -5678956789L; 1175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = (int) l; 1185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("l=" + l + " --> i=" + i); 1195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* int --> float */ 1215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = 1234; 1225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao f = (float) i; 1235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("i=" + i + " --> f=" + f); 1245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i = -1234; 1265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao f = (float) i; 1275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("i=" + i + " --> f=" + f); 1285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 1295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void unsignedShiftTest() 1315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao { 1325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao byte b = -4; 1335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao short s = -4; 1345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao char c = 0xfffc; 1355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int i = -4; 1365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao b >>>= 4; 1385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao s >>>= 4; 1395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao c >>>= 4; 1405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao i >>>= 4; 1415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("b=" + b + ", s=" + s + ", c=" + (int)c + ", i=" +i); 1435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("b=0x" + Integer.toHexString((int)b) 1445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao + ", s=0x" + Integer.toHexString((int)s) 1455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao + ", c=0x" + Integer.toHexString((int)c) 1465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao + ", i=0x" + Integer.toHexString(i)); 1475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 1485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void main(String[] args) { 1505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao convTest(); 1515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shiftTest1(); 1525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao shiftTest2(); 1535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao unsignedShiftTest(); 1545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 1555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao} 156