一.逻辑右移和算术右移
- 逻辑右移补0
- 算术右移填充符号位的值
二.计算机中如何表示小数?
现代计算机中浮点数一般采用
IEEE 754 标准。
单精度浮点数(float):
- 符号部分+指数部分(也叫阶码)+尾数部分(各部分都是原码表示)
- 尾数部分:将小数点前面的值固定为1(正则表达式),尾数越多,精度越高
- 指数部分使用移码(可简化浮点数的运算)
- 反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则
- 补码:解决负数加法运算正负零问题,弥补了反码的不足
- 移码:解决数值比较复杂,运算复杂等问题
总之,反码与补码都是为了解决负数运算问题,跟正数没关系,因此,不管是正整数还是正小数,原码,反码,补码都全部相同。
总结:
1、正数的原码、补码、反码均为其本身;
2、负数(二进制)的原码、补码、反码公式:
反码 = 原码(除符号位外)每位取反
补码 = 反码 + 1
反码 = 补码 - 1
移码 = 补码符号位取反