二进制基础编码主要涉及整数和浮点数的表示方法,以下是核心概念及编码规则:
一、整数编码方式
原码 - 最高位为符号位(0表示正数,1表示负数),其余位表示数值的绝对值。 - 示例:
- $+101011$ 的原码为 `00101011`
- $-101011$ 的原码为 `10101011`(不足位数用0补全)。
反码
- 符号位保持不变,其余位按位取反(0变1,1变0)。 - 示例:
- $-101011$ 的反码为 `11010100`。
补码
- 符号位不变,其余位按位取反后加1。 - 示例:
- $-101011$ 的补码为 `11010101`(即反码加1)。
特点:
补码简化了加减法运算,无需单独处理负数。
二、无符号数编码
无符号数直接用二进制表示数值,不包含符号位。- 例如:
十进制8对应的无符号二进制为 `1000`,机器数也是 `1000`
8位无符号数可表示0~255共256个值。
三、浮点数编码(以IEEE 754标准为例)
结构:32位浮点数分为三部分:
符号位(1位):0表示正数,1表示负数
指数位(8位):表示2的幂次
尾数位(23位):表示小数部分
示例:
$+3.14$ 的32位浮点数表示为 `0 00111110 1001101000111010`
负数通过符号位和补码表示。
四、编码注意事项
位数选择:
- 机器字长需根据数值范围选择,例如8位可表示-128~127,16位可表示-32768~32767。2. 零的表示:
- 原码中0000和1000都表示0,补码中0000表示+0,1000表示-0。
溢出处理:
- 加法运算需检查是否超出表示范围,例如8位补码最大值为127,再加1会溢出。
总结
二进制编码需根据数值类型选择合适方法:
整数:优先使用补码以简化运算
无符号数:直接用二进制表示
浮点数:遵循IEEE 754等标准。