定点数的编码
定点数分为定点小数和定点整数,主要使用原码、补码、反码和移码表示。
原码
机器数的最高位表示数的符号,其余各位表示数的绝对值。
原码整数的表示范围为 。
Tip
零的原码有正零和负零两种形式。
补码
正数的补码等于原码,负数的补码等于模(n+1位补码的模为 )与该负数绝对值之差。
补码整数的表示范围为 (比原码多表示一个 )。
n+1 位补码的几个特殊的补码表示:
- 求 : 连同符号位取反+1
补码与真值之间的转换
正数:等于原码; 负数:符号位为 1,剩余的“各位取反,末位加一”。(也可以是符号位为 1,最右边的 1 和右边不变,左边取反)
变形补码=双符号位补码=模 4 补码
反码
正数:等于原码; 负数:符号位为 1,各位取反
移码
移码就是在真值 上加上一个常数,通常是 ,相当于 在数轴上向正方向偏移了若干单位,这就是“译码”的由来。
移码和补码仅差一个符号位。
Tip
移码就是把表示范围看作一个数轴,表示范围的最小值看作原点 0,所以
整数的表示
- 无符号整数:全部二进制位都是数值位而没有符号位
- 有符号整数:一般使用补码
强制类型转换
强制类型转换不会改变每s一位的值,仅仅改变解释这串值的方式。
整数扩展
- 无符号数使用零扩展
- 补码使用符号扩展