位操作符只能处理(signed / unsigned) 字符型、短整形、整形变量常量字面值,而不能操作小数。也可以类中进行运算符重载。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
────────────────────────────
& 位逻辑与
| 位逻辑或
^ 位逻辑异或
- 位逻辑反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
& 位逻辑与
按位相与,同真为真,其他为假。
| 位逻辑或
按位相或,同假为假,其他为真。
^ 位逻辑异或
按位相异或,不同为真,相同为假。
- 位逻辑反
每一位取反。
>> 右移
数据的最低位移除 符号位补充一个原有符号(也可以理解为符号位不变 最高数据位补充一个符号位)
例子:正数 0010 0000 0000 1011 >>1 0001 0000 0000 0101
负数 1000 0000 0000 0000 >>1 1100 0000 0000 0000
<< 左移
数据的最高位移除,最低为补充0
例子:正数 0010 0000 0000 1011 <<1 0100 0000 0001 0110
负数 1000 0000 0000 0000 <<1 0000 0000 0000 0000
这里要注意的是 计算机当中数据的存储都是以补码形式的
对于有符号数据 最高位表示符号位0代表正数 1代表负数
正数的正 反 补码一致.
负数的反码是正码每一位取反(符号位除外), 补码是反码最后一位+1.