文章目录
- 运算符的分类
- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 三目运算符
- 移位运算符
- 左移运算符(<<)规则
- 右移运算符(>>)规则:
- 无符号右移运算符(>>>)规则:
运算符的分类
算术运算符
数学中的四则运算
运算符 | 运算 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 整除,只获取商的部分 |
% | 求模,余数 |
关系运算符
比较
运算符 | 比较 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
关系运算符最终结果是一个boolean类型,表示是否成立!!
true:成立
false:不成立
注意:”=“与”==“是不同的,”=“表示赋值, ”= =“表示判断两值是否相等
逻辑运算符
两个或者更多条件之间的关联关系·
1.a&b: &叫逻辑与: 规则: 当a和b同时为true,则结果为true,否则为false
第一个是false则第二个还会继续判断
2.a&&b: &&叫短路与: 规则: 当a 和 b 同时为true,则结果为true,否则为false
第一个是false则第二个不会继续判断
3.a|b:|叫逻辑或,规则:当a和b,有一个为true,则结果为true,否则为false
第一个是false则第二个还会继续判断
4.a||b: ||叫短路或,规则:当a和b有一个为true,则结果为true,否则为false
第一个是false则第二个不会继续判断
5.!a:叫取反,或者非运算.当a为true,则结果为false,当a为false是,结果为true
6.a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
赋值运算符
基本赋值运算符
int a = 20;
复合赋值运算符
+=, -=, *=, /=, %=
a += 10;[等价于a = a + 10]
三目运算符
条件表达式 ? 表达式1:表达式2;
1.如果条件表达式为true, 运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;
移位运算符
需要将10进制转换成2进制,然后以2进制的形式进行按位运算。
& // 按位与
| // 按位或
^ // 异或
~ // 按位取反
<< // 左移运算
>> // 有符号右移
>>> // 无符号右移
左移运算符(<<)规则
按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
语法格式:
需要移位的数字 << 移位的次数
例如: 3 << 2,则是将数字3左移2位
计算过程:
3 << 2
首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12。
数学意义:
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
右移运算符(>>)规则:
按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
语法格式:
需要移位的数字 >> 移位的次数
例如11 >> 2,则是将数字11右移2位
计算过程:
11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。转换为十进制是2。
数学意义:
右移一位相当于除2,右移n位相当于除以2的n次方。
无符号右移运算符(>>>)规则:
按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
其他结构和>>相似。
移位运算的一些规则,在运算中的使用
1、&运算符
|-- 判断奇偶
num % 2 = = 0,如果等于0则为偶
num & 1 = = 0,如果等于0则为偶
|-- 判断一个数是否是2的幂次方
num & (num - 1)==0,则num是2的幂次方
2、异或运算
任何数和0异或,值不会发生变化
两个相同的值(同一个数),做异或,结果为0
公式:-n=~n+1
~n=-n-1