基本运算符
+:加,计算左右两个操作数的和
-:减,计算左右两个操作数的差
*:乘,计算左右两个数的积
/:除,计算左右两个数的商
%:除余,计算左右两个数的余数
赋值运算符
=:将右边操作数的值赋值给左边
+=:将左边的数与右边的数进行加法运算后赋值给左边,a += b相当于a = a + b
-=:将左边的数与右边的数进行减法运算后赋值给左边,a -= b相当于a = a - b
*=:将左边的数与右边的数进行乘法运算后赋值给左边,a *= b相当于a = a * b
/=:将左边的数与右边的数进行除法运算后赋值给左边,a /= b相当于a = a / b
%=:将左边的数与右边的数进行除余运算后赋值给左边,a %= b相当于a = a % b
自增、自减
++a:先自增之后运算
a++:先运算再自增
关系和布尔运算符
==:判断左右两边是否相等,对于基本数据类型,==判断值是否相等。对于引用数据类型,==判断地址是否相等。!=:判断左右两边是否不等<:判断左边是否小于右边>:判断左边是否大于右边<=:判断左边是否小于等于右边>=:判断左边是否大于等于右边逻辑运算符
&&:逻辑与运算,左右两边均为true时,结果为true,否则结果为false||:逻辑或运算,左右两边有一边或全部为true时,结果为true,否则结果为false!:逻辑非运算,反转操作数的逻辑状态位运算符
&:按位与,将两个操作数转换为补码,按位进行与运算,同为1结果为1,否则为0
样例
-8 & -2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-2
原码:1000 0010
补码:1111 1101
反码:1111 1110
-8 & -2 = 1111 1000 = -8
|:按位或,将两个操作数转换为补码,按位进行或运算,有一个为1或全为1则结果为1,否则为0
样例
-8 | -2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-2
原码:1000 0010
补码:1111 1101
反码:1111 1110
-8 | -2 = 11111110 = -2
~:按位取反,将操作数转换为补码,按位进行取反,将0变成1,1变成0
样例
~-8
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
~-8 = 0000 0111 = 7
^:按位异或,将操作数转换为补码,按位进行异或,相同为0,不同为1
样例
-8 ^ -2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-2
原码:1000 0010
补码:1111 1101
反码:1111 1110
-8 ^ -2 = 0000 0110 = 6
移位运算
<<:左移运算,左移几位相当将这个数乘2的几次幂
先将左边的操作数转换为补码
将这个值整体向左移动右边的操作数位
右边空出来的位用0填补,左边溢出的舍弃
样例
-16 << 2
-16
原码:1001 0000
反码:1110 1111
补码:1111 0000
-16 << 2 = 1100 0000 = -64
>>:右移运算,右移几位相当于将这个数除以2的几次幂
先将左边的操作数转换为补码
将这个值整体向右移动右边的操作数位
左边空出来的位用0或1填补(正数用0,负数用1),右边溢出的舍弃
样例
-8 >> 2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-8 >> 2 = 1111 1110 = -2
8 >> 2
8:0000 1000
8 >> 2 = 0000 0010 = 2
原文:https://www.cnblogs.com/ts00321001/p/14152415.html