请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于小数补码的一个小疑惑

老师,您在写-54表示成二进制浮点数的时候小数部分规格化后是:- 0.110110,求出的补码为 0010100000,尾数符为1,但是之前您在说小数的补码运算的时候,说小数的补码当小数为负数的时候为 2 + X,如果是单纯的对于 “-0.110110”这个数取补码,他的表示应该是 (下面和题目一样为11位):
原码: x = 1, 0.1101100000
反码: x = 1, 1.0010011111
补码: x = 1, 1.0010100000
我有个疑惑就是是不是在浮点计算的时候,存储的小数部分就是小数点后面的数呢?即0010100000,前面求补码得出的1.0010100000中的小数点左边的“1”就不算小数部分了是嘛?

正在回答

1回答

这里是两个概念哈,需要特别注意的。

2+x这个是小数补码的定义,它是求解小数补码的一个方法。

而小数的规格化是指浮点数的存储方式。

而对于小数点左边的1也是需要存储的,对于补码: x = 1, 1.0010100000,需要阶码加一,同时尾数右移一位(需要满足规格化的存储格式),只是在运算过程中不需要特别关注这一点。

希望对你有所帮助哦。

0 回复 有任何疑惑可以回复我~
  • 提问者 v不离不弃v #1
    老师,您看我理解的对不对,对于-54来说,我们要存这个浮点数,那么就需要先求出原码,然后规格化,将规格化后的结果中尾数部分求补码,然后依次将尾数符,尾数,阶符,阶码存入,以上就是存浮点数的流程,而小数补码就是仅仅对一个小数取补码,遵从取补码的规则 :当为负数时x + 2。老师我理解的对不对?
    
    还有就是,如果需要存储- 0.110110这个数,就应该按照存取浮点数的规则和流程,- 0.110110 * 2^0 --> 对尾数110110取补码001010,然后依次存入尾数符 1,尾数 001010,阶符 0,阶码 0对吗?如果有不对的地方能帮我指出来嘛,谢谢老师!
    回复 有任何疑惑可以回复我~ 2020-06-26 09:16:09
  • 咚咚呛 回复 提问者 v不离不弃v #2
    理解是正确的,挺好,点赞。
    回复 有任何疑惑可以回复我~ 2020-06-26 11:33:50
  • 提问者 v不离不弃v #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-28 08:59:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信