跳到主要内容

数的表示

计算机内部以二进制存储与处理数据,理解数与字符的编码方式是学习组成原理的起点。本篇梳理进制转换、机器数表示、定点与浮点表示,以及常见字符编码。

进制与转换

常见进制有 二进制 (B)、八进制 (O)、十进制 (D)、十六进制 (H)。任意 R 进制数 N = Σ d_i × R^i

  • 二/八/十六 ↔ 十:按权展开求和。
  • 二 ↔ 八:以 3 位分组;二 ↔ 十六:以 4 位分组(从低位起分组,高位不足补 0)。
0x2F = 2*16 + 15 = 47
47 / 2 = 23 ... 1
23 / 2 = 11 ... 1
11 / 2 = 5 ... 1
5 / 2 = 2 ... 1
2 / 2 = 1 ... 0
1 / 2 = 0 ... 1 => 0b101111

机器数:原码、反码、补码

以 8 位为例,最高位为符号位(0 正 1 负)。

  • 原码:符号位 + 绝对值,+5 = 0000 0101,-5 = 1000 0101
  • 反码:正数同原码;负数符号位不变,数值位按位取反,-5 = 1111 1010
  • 补码:正数同原码;负数 = 反码 + 1,-5 = 1111 1011。补码可将减法化为加法,溢出规则统一,现代计算机普遍采用。

整数与浮点数

  • 整数(定点)用 补码 表示,n 位补码范围 -2^(n-1) ~ 2^(n-1) - 1
  • 浮点数采用 IEEE 754 标准,数 = (-1)^s × 1.M × 2^(E-bias)
    • 单精度:1 位符号 + 8 位阶码(bias=127) + 23 位尾数。
    • 双精度:1 位符号 + 11 位阶码(bias=1023) + 52 位尾数。
类型总位数阶码尾数偏置近似精度
float32328231277 位十进制
float64641152102315-16 位

字符编码

  • ASCII:7 位,共 128 个字符,英文字母、数字、控制字符。
  • GBK:双字节编码,兼容 ASCII,涵盖简体中文。
  • UTF-8:变长 1-4 字节,兼容 ASCII,全球统一,中文常用 3 字节,首位为 1110xxxx