整型数表示

计算机使用固定长度的位模式来表示整数。主要有两种表示方式:无符号数有符号数(补码)

无符号数表示

无符号数只能表示非负整数。对于一个 位的无符号数,其表示的数值范围为

  • 每一位的权重都是正的
  • 例如:1111(4位)= 8 + 4 + 2 + 1 = 15

有符号数表示(补码, Two’s Complement)

补码是目前几乎所有计算机系统采用的有符号整数表示方法。最高位(符号位)具有负权重,其余位的权重为正。

  • 最高位 的权重为
  • 例如(4位):
    • 1111 = -8 + 4 + 2 + 1 = -1
    • 1000 = -8 + 0 + 0 + 0 = -8(最小的负数)

范围与不对称性

对于 位补码表示:

名称公式
最大值(TMax)011…1
最小值(TMin)100…0

补码表示的一个重要不对称性:

即负数的范围比正数大1。这是因为补码需要表示0,所以正数(包括0)和负数各占一半,但0在正数侧,所以正数比负数少一个。例如8位补码:TMax = 127,TMin = -128。

补码取反

对补码 x 取相反数(求 -x)的快捷方法:

-x = ~x + 1

即按位取反再加1。这适用于 TMin 之外的所有数(TMin 的相反数超出了表示范围,即溢出)。

相关笔记

链接到