如何计算补码、反码表示的负浮点数的十进制数值
补码与反码负浮点数转十进制方法
以下以示例数 101.1011 为例,分别演示两种编码的转换步骤:
一、补码(Two's Complement)转十进制
已知补码 101.1011,转换结果为 -2.3125,步骤如下:
- 识别符号位:最高位为
1,表示这是一个负数 - 补码转反码:对整个补码减
1(仅需对最低位操作):101.1011 - 0.0001 = 101.1010 - 反码转原码:保持符号位不变,对数值部分(整数+小数位)逐位取反:
数值部分01.1010取反后为10.0101,因此原码为110.0101 - 计算原码数值的十进制值:
10.0101 = 2^1 + 2^-2 + 2^-4 = 2 + 0.25 + 0.0625 = 2.3125 - 添加符号,最终结果:
-2.3125
二、反码(One's Complement)转十进制
已知反码 101.1011,转换结果为 -2.25,步骤如下:
- 识别符号位:最高位为
1,表示这是一个负数 - 反码转原码:保持符号位不变,对数值部分逐位取反:
数值部分01.1011取反后为10.0100,因此原码为110.0100 - 计算原码数值的十进制值:
10.0100 = 2^1 + 2^-2 = 2 + 0.25 = 2.25 - 添加符号,最终结果:
-2.25
内容的提问来源于stack exchange,提问作者john smith
相关产品推荐
相关产品推荐

