位运算与进制转换
位运算
运算符
运算符 | 运算定义 |
---|---|
A instanceof B | 检查A是不是B的对象 |
&& | 短路与(一旦遇到结果为false就直接返回false,后续的条件运算将忽略) |
|| | 短路或(一旦遇到结果为true就直接返回true,后续的条件运算将忽略) |
! | 取反 |
& | 逻辑与(效率低,一般不用于条件表达式) 或 按位与 |
| | 逻辑或 |
^ | 逻辑异或 或 按位异或 |
三元运算符 | 条件表达式?表达式1(条件为真进入):表达式2(条件不成立进入) |
>> | 算术右移(最高位补符号位) |
<< | 算术左移 |
>>> | 无符号右移(最高位补0) |
~ | 按位取反 |
运算符优先级(引自:feifuzeng)
一些等价运算
- a%b=a-a/b*b
- num/ 2 n 2^n 2n = num>>n
- num%n = num&(n-1) (前提:n是2的幂)
位运算的应用
- 求两个数相加的进位:(a&b)<<1
- 求一个数的二进制的最右侧的1:n&((~n)+1)
进制转换
n进制→十进制
方法:遵循下面的公式
∑
i
=
0
n
m
i
∗
R
i
\sum_{i=0}^{n}m_i*R^i
∑i=0nmi∗Ri
其中:n表示R进制的位数,
m
i
m_i
mi表示R进制中第i位的数字
十进制→n进制
方法:除n取余法
步骤:
- 计算余数
- 余数逆序