1. x/y 中,两个实数相除的结果是双精度实数,两个整数相除的结果为整数。如 5/3 的结果为 1,舍去小数部分。
  2. % 运算符要求参加运算的对象为整数,结果也是整数。如 7%3,结果为 1,除了%以外的运算符的操作数都可以是任何算数类型。

位运算

| 运算符 | & | | | ^ | ~ | << | >> | | --- | --- | --- | --- | --- | --- | --- | | 说明 | 按位与 | 按位或 | 按位异或 | 取反 | 左移 | 右移 |

按位异或运算(^)

参与^运算两个二进制位不同时,结果为1,相同时结果为 0。

按位异或运算可以用来将某些二进制位反转。

例如要把 n 的高 16 位反转,保留低16 位,可以进行n ^ 0XFFFF0000运算

使用异或交换两个数:

a ^=b;

b ^= a;

a ^= b;

原理:一个数异或另一个数两次后,该数保持不变。

“简写”: (a ^= (b ^= (a ^= b)))

左移与右移

如果数据较小,被丢弃的高位不包含 1,那么左移 n 位相当于乘以 2 的 n 次方。

如果被丢弃的低位不包含 1,那么右移 n 位相当于除以 2 的 n 次方(但被移除的位中经常会包含 1)

注意:右移时会自动保留有符号int的符号位 例如:有符号int 0b1100>>2=0b1011