赋值与位移原创
# 赋值运算
+=
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 |= b; // 等价于 a=a|b;
&=
a &= b; // 等价于 a=a&b;
^=
a ^= b; // 等价于 a=a^b;
# 位运算
# 左移 <<
高位丢弃,地位补0
。相当于乘以2
。
警告
左移,可能会使正数变成负数,负数变成正数。
如:0x7385 0x8011
# 右移 >>
低位丢弃,正数的高位补0
(无符号数视为正数),负数高位补1
。相当于除以2
。
移位比乘法和除法效率要高。
笔记
负数右移,对于偶数来说是除以2,但对奇数来说是先减1在除以2。
对于 -1 来说,无论右移多少位,值永远是 -1。
# 按位取反 ~
+1取反。
# 按位或 |
有1就是1。
# 按位异或 ^
相同为0,不同为1。
相同的数进行异或时,结果为0;任何数和0异或结果是其本身。
# 按位与 &
有0就是0。
一个整数与其负数按位与,会得到这个整数最低位为1的数。
上次更新: 2022/07/30, 16:43:13