例:a=1  b=2

a=b++  先赋值后自增

a=2  b=3

a=++b  先自增后赋值

a=3  b=3


运算符         描述          示例              结果

=                  赋值         a=10              a=10

+=               加等于      a=1  a+=3       a=4

-=                减等于      a=1  a-=3       a=-2

*=                乘等于      a=1  a*=3       a=3

/=                除等于      a=10  a/=3     a=3

%=              模等于      a=10  a%=3   a=1


short  s=10;

s=s+1;

输出是错的,精度损失。因为1默认是int,从大变小造成精度损失。但是写成s+=1不会错误,可以想象成s=s+1


0是正数,1是负数

1.按位取反~  把十进制正数转换二进制为负数

0000 0101   1111 1010

2.按位与&   全1则1,全0则0,不同为0

1100 1011   0110 1101  = 0100 1001

3.按位或|    全1则1,全0则0,不同为1

1100 1011   0110 1101 = 1110 1111

4.按位异或^  相同为0,不同为1

1100 1011   0110 1101 = 1010 0110

&于和&&短路与的区别:

&:在逻辑运算时分别计算表达式两边的结果,在做&运算。在做位运算时&表示按位与

&&:短路与运算,先计算左边的表达式,如果结果是false,那么不用计算右边的表达式,直接返回false

如果左边的表达式是true,在计算右边的表达式,如果右边的表达式为true,返回true,否则为false

|或与||短路或原理同上。


位移运算符:

左移:“a<<b;”将二进制形式的a逐位左移b位,最低位空出的b位补0

带符号右移:“a>>b;”将二进制形式的a逐位右移b位,最高位空出的b位,补原来的符号位

无符号右移:“a>>>b;”将二进制形式的a逐位右移b位,最高位空出的b位补0

面试题:(用位移方法最快)

最快的速度计算8*4的结果

4=2的2次幂

8<<2

面试题:(用异或^方法最快,相同为0,不同为1)

不使用第三个变量交换两个数的位置(a和b不能相同)

a=a^b  b=a^b  a=a^b

就可以交换位置


 

posted on 2019-06-25 17:21  爱吃狗肉的狗  阅读(353)  评论(0)    收藏  举报