定点数的编码

定点数分为定点小数和定点整数,主要使用原码、补码、反码和移码表示。

原码

机器数的最高位表示数的符号,其余各位表示数的绝对值

原码整数的表示范围为

Tip

零的原码有正零和负零两种形式。

补码

正数的补码等于原码,负数的补码等于模(n+1位补码的模为 )与该负数绝对值之差。

补码整数的表示范围为 (比原码多表示一个 )。

n+1 位补码的几个特殊的补码表示:

  1. 连同符号位取反+1

补码与真值之间的转换

正数:等于原码; 负数:符号位为 1,剩余的“各位取反,末位加一”。(也可以是符号位为 1,最右边的 1 和右边不变,左边取反)

变形补码=双符号位补码=模 4 补码

反码

正数:等于原码; 负数:符号位为 1,各位取反

移码

移码就是在真值 上加上一个常数,通常是 ,相当于 在数轴上向正方向偏移了若干单位,这就是“译码”的由来。

移码和补码仅差一个符号位

Tip

移码就是把表示范围看作一个数轴,表示范围的最小值看作原点 0,所以

整数的表示

  1. 无符号整数:全部二进制位都是数值位而没有符号位
  2. 有符号整数:一般使用补码

强制类型转换

强制类型转换不会改变每s一位的值,仅仅改变解释这串值的方式。

整数扩展

  1. 无符号数使用零扩展
  2. 补码使用符号扩展