移位运算符
移位运算符:
<< (左移)
规律:一个操作数进行左移运算的时候,结果就是等于这个操作数乘以2的n次方,n为左移的位数。
3<<1 = 3*2(1) = 6
3<<2 = 3*2(2) =12
3<<3 = 3*3(3) = 24
System.out.println(3<<1);
运算方式:
00000011
向左移一位 000000110 //前面的的0去掉,后面空出来的补上0.等到6
System.out.println(3<<2);
System.out.println(3<<3);
>> (右移)
规律:一个操作数在做右移运算的时候,实际上就是等于该操作数除以2的n次方,n为右移的位数。
3>>1 3/2(1) = 1
3>>2 3/2(2) = 0
注意:一个操作数进行右移的运算的时候,如果该操作数为正数,那么左边空缺出来的用0补上,如果该数为负数,那么就用1补。
System.out.println(3>>1);
运算方法:
00000011
右移一位 000000011 //前面超出的1去掉,后面空出来的补上0.等到1
System.out.println(3>>2);
>>> (无符号右移 ):
无符号右移与右移的区别:进行右移运算 的时候,如果操作数是一个正数,那么左边的空缺位使用0补,
如果操作数为负数,那么左边的空缺位使用1补。而使用无符号右移的时候,不管是正数还是负数都是使用0补。
笔试题目:使用最高效率算出2乘以8的结果。
2<<3 = 2*2(3) = 16;
_____________________________________
三元运算符(三目有三符):
格式;
布尔表达式?值1,值2;
例:
int age = 16;
System.out.println(age>=18?"cnr":"wcn");
结果:
三元运算符要注意的细节:
使用三元运算符的时候,一定要使用其返回的结果,或者定义一个接收其返回的结果。
算数符的优先级与结合性:
例子:
int a = 1;
int b = 2;
int c = 3;
int result = a*b+c/2+2*(a+b)/c;
System.out.println("result = "+result);
运算规律:
a*b+c/2+2*(a+b)/c;
2+c/2+2*(a+b)/c;
2+1+2*(a+b)/c;
2+1+2*3/c;
2+1+6/c
2+1+2
5
运算结果: