刷题笔记:定点数补码表示与转换
1. 题目要求
题目背景:字长为 8 位(含 1 位符号位)。 题目目标:求下列数值的原码、反码和补码。
- 整数:0, -0, 1101, -1101
- 小数:0.1000, -0.1000, 0.1111, -0.1111
2. 核心知识点总结
A. 符号位规范
- 正数:符号位为
0。 - 负数:符号位为
1。 - 分隔符:整数通常用逗号
,隔开,小数通常用小数点.隔开。
B. 转换逻辑(重点)
- 正数:三码合一(原码 = 反码 = 补码)。
- 负数:
- 反码:原码符号位不变,数值位按位取反。
- 补码:在反码末位加 1。
- ⚡ 快捷算法(灵动转换):从原码右端向左找第一个
1,该1及其右边的0保持不变,左边(除符号位外)数值位全部取反。
C. 特殊值:0 的表示
- 原码/反码:
和 有两种形式。 - 补码:
和 形式唯一,均为全 0。
3. 典型题解示例
| 数值 | 原码 | 反码 | 补码 |
|---|---|---|---|
| 0 | 0,0000000 | 0,0000000 | 0,0000000 |
| -0 | 1,0000000 | 1,1111111 | 0,0000000 |
| 1101 | 0,0001101 | 0,0001101 | 0,0001101 |
| -1101 | 1,0001101 | 1,1110010 | 1,1110011 |
| 0.1000 | 0.1000000 | 0.1000000 | 0.1000000 |
| -0.1000 | 1.1000000 | 1.0111111 | 1.1000000 |
| -0.1111 | 1.1111000 | 1.0000111 | 1.0001000 |
4. 深度思考:整数与小数的共通性
8位整数补码循环圆环 (模 256)
模运算逻辑
[x]补 = M + x
零点 (0000 0000)
正负在此汇合,补码唯一
溢出点 (1000 0000)
从 +127 跨越到 -128
补码的本质是模运算 (Modular Arithmetic)。
- 共通公式:对于负数,$ [x]_补 = 模 + x $。
- 模定义:定点整数模为
,定点小数模为 。 - 灵动之处:补码将符号位真正"数值化",其权重在小数中为
,在整数中为 。这使得计算机可以用同一套加法器逻辑处理正负数运算,无需额外设计减法器。