问题:下述哪两个值相等?
A.16>4
B.16/2
C.16*4
D.16>>2
E.16/2^2
F.16>>>2
利用程序去做:
System.out.println("A:"+(16>4));
System.out.println("B:"+(16/2));
System.out.println("C:"+(16*4));
System.out.println("D:"+(16>>2));
System.out.println("E:"+(16/2^2));
System.out.println("F:"+(16>>>2));
结果:
A:true
B:8
C:64
D:4
E:10
F:4
解释:
A、B、C都不用说,那就从下面的一个一个说起;
D:这是右移运算符,也就是把16变成二进制数,然后右移两位,再把移动之后的二进制数转换为10进制数输出,所以就是把0001 0000右移2位,结果就是0000 0100,对应的十进制数是4;
E:里面那个符号是逻辑异或,所以这个选项其实就是计算8^2的,计算方法就是把两个数变成二进制的,然后把异或之后的结果变成十进制的输出,同时如果是逻辑与、或、非都是这么计算的
F:>>>是无符号右移运算符,也就是符号位可以跟着移动,但是这个没有符号位,所以在这里就和>>是差不多的,也是对应的二进制数往右移动两位,然后在转换成10进制数,结果就是4了