赋值与位移原创
# 赋值运算
+=
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
