版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/86439186
如下:
int a = 2;
if (a) {//错误的,Incompatible type,required boolean
}
if (!a) {//错误的,Operate ! can not be applied to int
}
System.out.println(Integer.MIN_VALUE);//-2147483648
System.out.println(Integer.MIN_VALUE / -1);//-2147483648
System.out.println(Integer.MAX_VALUE);//2147483647
System.out.println(Integer.MAX_VALUE / -1);//-2147483647
//c/b=a,c是被除数,b是除数,a是商;如果被除数与除数都是正数或都是负数,则商是正数;反之商是负数
System.out.println(6 / 2);//3
System.out.println(-6 / -2);//3
System.out.println(6 / -2);//-3
System.out.println(-6 / 2);//-3
System.out.println(2<<<2);//错误,Expression expected,java没有按位左移运算符
System.out.println(8 >>> 2);//2
System.out.println(-8>>>2);//1073741822
System.out.println(Math.pow(-2, 30) - 1);//1.073741823E9
System.out.println(Math.pow(-2, 29) - 1);//-5.36870913E8
System.out.println(-Math.pow(-2, 30));//-1.073741824E9
System.out.println(15 >> 1);//7
System.out.println(-15 >> 1);//-8
System.out.println(-15 >>> 1);//2147483640
以上基于java1.8
负数在计算机中是按补码存储的,所以需要按照补码右移,高位补1
正数在计算机中是按原码存储的,所以原码直接右移即可,高位补0
end