hotspot虚拟机源码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
2.1 KiB

public class IntShiftTests {
private static int test_shl(int a, int b) {
return a << b;
}
private static int test_shlc1(int a) {
return a << 1;
}
private static int test_shlc33(int a) {
return a << 33;
}
private static int test_shr(int a, int b) {
return a >> b;
}
private static int test_shrc1(int a) {
return a >> 1;
}
private static int test_shrc33(int a) {
return a >> 33;
}
private static int test_ushr(int a, int b) {
return a >>> b;
}
private static int test_ushrc1(int a) {
return a >>> 1;
}
private static int test_ushrc33(int a) {
return a >>> 33;
}
private static void assertThat(boolean assertion) {
if (! assertion) {
throw new AssertionError();
}
}
public static void main(String[] args) {
assertThat(test_shl(32, 2) == 128);
assertThat(test_shl(0x80000000, 1) == 0);
assertThat(test_shl(0x40000000, 1) == 0x80000000);
assertThat(test_shl(0x40000000, 33) == 0x80000000);
assertThat(test_shr(32, 2) == 8);
assertThat(test_shr(1, 1) == 0);
assertThat(test_shr(0x80000000, 1) == 0xc0000000);
assertThat(test_shr(0x40000000, 33) == 0x20000000);
assertThat(test_ushr(32, 2) == 8);
assertThat(test_ushr(1, 1) == 0);
assertThat(test_ushr(0x80000000, 1) == 0x40000000);
assertThat(test_ushr(0x40000000, 33) == 0x20000000);
assertThat(test_shlc1(32) == 64);
assertThat(test_shlc1(0x80000000) == 0);
assertThat(test_shlc1(0x40000000) == 0x80000000);
assertThat(test_shlc33(0x40000000) == 0x80000000);
assertThat(test_shrc1(32) == 16);
assertThat(test_shrc1(1) == 0);
assertThat(test_shrc1(0x80000000) == 0xc0000000);
assertThat(test_shrc33(0x40000000) == 0x20000000);
assertThat(test_ushrc1(32) == 16);
assertThat(test_ushrc1(1) == 0);
assertThat(test_ushrc1(0x80000000) == 0x40000000);
assertThat(test_ushrc33(0x40000000) == 0x20000000);
}
}