为什么IEEE754的偏移量是127而不是128呢

最初出现这个问题是因为我遇到一个将IEEE754转化为十进制的问题,而我的做法是这样的:
因为IEEE754阶码采用移码的形式出现,然后我先把他符号位取反换成了补码,之后转化为了原码,但在对照答案时,我发现我的计算结果要比正确答案小1;百思不得其解。

用一个例子来说明一下我当时的计算思路:

  1. 已知阶码是 1000 0011
  2. 求其补码是 0000 0011
  3. 发现其符号位是0,故为正数,故原码和补码相同,故+3

正确答案说:

1000 0011=128+3-127=4
出现这样的结果,我发现是因为 如果偏移值是128的话,我的答案就是正确的,但这里的偏移值是127

之后我看了一下网上的说法,大体上分为了两种:
其一: 偏移值有8位 其范围本来应该是0-255,如果他是一个带有符号位的八位数的话,就应该是-127~+127;但IEEE754又规定:当阶码全为0时(0000 0000)根据符号位,有正0和负0之分;当阶码全为1时(1111 1111)根据符号位,有正无穷大和负无穷大之分。 于是我们去掉这两个边界,其范围就成了1-254,-127~+127 就变成了-126 ~-0和1 ~127 ,即-126 ~+127.
范围那里再说详细点就是 去掉的是0000 0000和1111 1111,考虑其是带符号的,故0000 0000应该是+0,1111 1111应该是-127,也就是在原来的-127 ~+127上删掉了+0和-127,所以最终范围成了-126 ~-0 和1~127,合并起来就是-126 ~127.

从结果上看,这也保证了指数取值范围的对称性,其根本是来自于那个最高位被拿去当符号位了的原因。

其二: 因为ieee754的尾数部分标准化后首位的1会隐藏掉。

对于第二点原因我自己不是很理解,先把第二个问题的回答所在的网站放上来(https://zhidao.baidu.com/question/246873315.html)
打算先问问老师再来说这个问题。

发布了6 篇原创文章 · 获赞 0 · 访问量 62

猜你喜欢

转载自blog.csdn.net/weixin_43984457/article/details/105312418
今日推荐