有符号数据的存储
最高位为符号位,0表示正数,1表示负数
正数存储
正数以源码的形式存储
负数以补码的方式存储
步骤:
- 写出源码
- 算出反码(源码各位取反即可)
- 得到补码(反码末尾加1即可)
例如:-128(通过短除知道商为0,从下向上取余数,自左向右排列,不够8位,高位用0补齐)
- 源码:10000000
- 反码:01111111
- 补码:10000000
按位逻辑算符
- 按位取反:~
- 二进制上每一位数字取反(0-->1;1-->0)
- 不改变原数据的值
- 按位与:&
- 相同位都为1(1表示正,0表示假)结果才为1,否则为0
- 不改变原数据的值
- 按位或:|
- 相同位有一个为1(1表示正,0表示假)结果就为1,否则为0
- 不改变原数据的值
-
- 按位异或:^
- 相同位不相同(1表示正,0表示假)结果才为1,否则为0
- 不改变原数据的值
位移运算符
- 左移:<<
8 << 2 在二进制上,每位向左移动两位,移除的部分补零,相当于 8 *(2^2)
- 右移:>>
8 >> 2 在二进制上,每位向右移动两位,移除的部分补零,相当于 8 /(2^2)