定点数是指小数点位置固定的数,分为定点整数(小数点在最低位之后)和定点小数(小数点在符号位之后)。原码、反码、补码、移码是四种常用的编码方式。
$X = +1011$,则 $[X]_{原} = 0,1011$;$X = -1011$,则 $[X]_{原} = 1,1011$。
n+1 位原码表示范围:$-(2^n-1) \sim +(2^n-1)$。
$X = +0.1011$,则 $[X]_{原} = 0.1011$;$X = -0.1011$,则 $[X]_{原} = 1.1011$。
原码小数表示范围:$-(1-2^{-n}) \sim +(1-2^{-n})$。
$X = +1011 \rightarrow [X]_{反} = 0,1011$;$X = -1011 \rightarrow [X]_{反} = 1,0100$。
$X = +1011 \rightarrow [X]_{补} = 0,1011$;$X = -1011 \rightarrow [X]_{反} = 1,0100 \rightarrow [X]_{补} = 1,0101$。
n+1 位补码表示范围:$ -2^n \sim +(2^n-1)$,比原码多表示一个负数 $-2^n$。
$X = +0.1011 \rightarrow [X]_{补} = 0.1011$;$X = -0.1011 \rightarrow [X]_{补} = 1.0101$。
小数补码表示范围:$-1 \sim +(1-2^{-n})$;-1 的补码为 $1.000...0$。
[X]补 = 2^(n+1) + X (mod 2^(n+1)),X 为负整数 [X]补 = 2 + X (mod 2), X 为负小数
$X = +1011 \rightarrow [X]_{补} = 0,1011 \rightarrow [X]_{移} = 1,1011$;$X = -1011 \rightarrow [X]_{补} = 1,0101 \rightarrow [X]_{移} = 0,0101$。
| 编码 | 正数 | 负数 | 0 的表示 | 特点 |
|---|---|---|---|---|
| 原码 | 不变 | 符号 + 绝对值 | $\pm0$ 两种 | 直观,运算复杂 |
| 反码 | 不变 | 除符号外取反 | $\pm0$ 两种 | 过渡编码 |
| 补码 | 不变 | 反码 + 1 | 唯一 | 最常用,加减统一 |
| 移码 | 补码符号取反 | 补码符号取反 | 唯一 | 用于阶码,可直接比较 |
最大正数:01111111 = +127 最小负数:10000000 = -128 -1: 11111111 0: 00000000
| 编码 | n+1 位整数范围 | n+1 位小数范围 |
|---|---|---|
| 原码 | $-(2^n-1) \sim +(2^n-1)$ | $-(1-2^{-n}) \sim +(1-2^{-n})$ |
| 反码 | $-(2^n-1) \sim +(2^n-1)$ | $-(1-2^{-n}) \sim +(1-2^{-n})$ |
| 补码 | $-2^n \sim +(2^n-1)$ | $-1 \sim +(1-2^{-n})$ |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。