【补码原码的表示范围】关于补码为1.00000的数真值为-1.00000的分析

博客探讨了补码为1.00000的数真值为何为-1.00000的问题。通常思路会错误地将补码转换为原码再求真值,但实际上是直接根据补码定义得出x = -1.00000。内容强调定点数的原码和补码表示范围,指出补码涵盖原码中最小负数的情况。
摘要由CSDN通过智能技术生成

先看问题:已知【补码】1.00000,求该数的【真值】

按照一般人的思路:

1.00000是定点小数的补码形式,所以按照补码求原码的方法,应该先取反再加一,得到原码1.00000换做真值为-0。到这里后,读过小学二年级的我们都应该知道,-0的补码应该是和+0一样的全为0,而不应该是1.00000,所以由此可知,得出的答案是错误的,那问题究竟出在哪里呢?

我们来捋一捋:

我们之前的思路是想将补码转化为原码,然后再将原码转化为真值,所以我们就默认了该定点小数存在原码,也就可以进行取反加一,但实际上存在原码吗?

我们再看一看定点数的原码表示范围:

可以得出:定点整数的表示范围为(-2^n, 2^n)定点小数的表示范围为(-1, 1) 所以之前的思路得到了原码为1.00000是根本上就错误的结论,因为根本就不存在原码是1.00000的数。

正确的思路:

这道题是根据补码求其真值

所以根据补码的定义:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值