1 public class LongShiftTests { 2 3 private static long test_shl(long a, long b) { 4 return a << b; 5 } 6 7 private static long test_shlc1(long a) { 8 return a << 1; 9 } 10 11 private static long test_shlc65(long a) { 12 return a << 65; 13 } 14 15 private static long test_shr(long a, long b) { 16 return a >> b; 17 } 18 19 private static long test_shrc1(long a) { 20 return a >> 1; 21 } 22 23 private static long test_shrc65(long a) { 24 return a >> 65; 25 } 26 27 private static long test_ushr(long a, long b) { 28 return a >>> b; 29 } 30 31 private static long test_ushrc1(long a) { 32 return a >>> 1; 33 } 34 35 private static long test_ushrc65(long a) { 36 return a >>> 65; 37 } 38 39 private static void assertThat(boolean assertion) { 40 if (! assertion) { 41 throw new AssertionError(); 42 } 43 } 44 45 public static void main(String[] args) { 46 47 assertThat(test_shl(32, 2) == 128); 48 assertThat(test_shl(0x8000000000000000L, 1) == 0); 49 assertThat(test_shl(0x4000000000000000L, 1) == 0x8000000000000000L); 50 assertThat(test_shl(0x4000000000000000L, 65) == 0x8000000000000000L); 51 52 assertThat(test_shr(32, 2) == 8); 53 assertThat(test_shr(1, 1) == 0); 54 assertThat(test_shr(0x8000000000000000L, 1) == 0xc000000000000000L); 55 assertThat(test_shr(0x4000000000000000L, 65) == 0x2000000000000000L); 56 57 assertThat(test_ushr(32, 2) == 8); 58 assertThat(test_ushr(1, 1) == 0); 59 assertThat(test_ushr(0x8000000000000000L, 1) == 0x4000000000000000L); 60 assertThat(test_ushr(0x4000000000000000L, 65) == 0x2000000000000000L); 61 62 assertThat(test_shlc1(32) == 64); 63 assertThat(test_shlc1(0x8000000000000000L) == 0); 64 assertThat(test_shlc1(0x4000000000000000L) == 0x8000000000000000L); 65 assertThat(test_shlc65(0x4000000000000000L) == 0x8000000000000000L); 66 67 assertThat(test_shrc1(32) == 16); 68 assertThat(test_shrc1(1) == 0); 69 assertThat(test_shrc1(0x8000000000000000L) == 0xc000000000000000L); 70 assertThat(test_shrc65(0x4000000000000000L) == 0x2000000000000000L); 71 72 assertThat(test_ushrc1(32) == 16); 73 assertThat(test_ushrc1(1) == 0); 74 assertThat(test_ushrc1(0x8000000000000000L) == 0x4000000000000000L); 75 assertThat(test_ushrc65(0x4000000000000000L) == 0x2000000000000000L); 76 } 77 }