移位运算符

移位运算符:

  <<  (左移)

规律:一个操作数进行左移运算的时候,结果就是等于这个操作数乘以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

向左移一位   00000011  //前面的的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

运算结果:

 

posted @ 2021-12-11 20:26  柯基$  阅读(348)  评论(0)    收藏  举报