移码的再总结

移码的再总结

@(组成原理)

在总结原码,反码,补码的表示范围时,忽略了对移码的总结,现在看移码本身的表示范围与IEEE754使用的特殊阶码,有点迷惑,思考后才明白,这其中的关节。

首先我们明白移码与补码有相同的表达能力。也就是说,给定相同的机器字长,它们的表达范围相同。

比如,8位机器字长,都用1位表达正负。
则补码的表示范围:

[27,+271]=[128,+127]

移码的表示范围:

[27,+271]=[128,+127]

二者相同。

如果换一种说法,n位阶码,等同于n位机器字长。也需要用一位表示正负。

移码只用于表示整数。

定义:在真值上加上一个常数,这个常数叫偏置值。通常取 2n ,这个n是数据位,即机器字长去掉一个符号位。

表达范围 [2n,+2n1],n+1

值得关注的特点是:

  • 0的表示唯一。 [+0]=2n+0=[0]=2n0=1,000...000(n0n+1)
  • 一个真值的移码和补码仅仅相差一个符号位。无论正负。
  • 移码全0时,对应的真值最小值 2n 。移码全1时,对应真值的最大值 2n1
  • 移码保持了数据原有的大小顺序,移码大真值就大,移码小,真值就小。

特别思考最后一条。对于正数,因为符号位都是0,现在 2nn+12n 加过来,则最高位变1,于是移码大,真值就大。

对于负数,我们以3位数据位1位符号位来看。

表达范围是:[-8,7].

补码–移码:

8=1,000+23=0,0007=1,001+23=0,0016=1,010+23=0,0105=1,011+23=0,0114=1,100+23=0,1003=1,101+23=0,1012=1,110+23=0,1101=1,111+23=0,111

可见通过移码的表示法,能够更清晰的去把握补码的负数表示形式。

移码是非常自然的,从全0开始到全1,主观上与我们的直觉一致,但是表示范围与补码相同。

主要看IEEE754编码下,有8位移码.
若是单纯的用原本移码的定义,表示范围是 [27,271]=[128,127] .
但是实际上是 [126,127]

为了空两个状态表达非规格化数和无穷大,去掉了00000000(8个0),11111111(8个1).

注意,这里的状态是移码状态。所以移码最大的状态表达式是 11111110B=254 ,最小是 00000001=1 .

普通情况是真值加上偏置值求得移码表示,现在是已知移码表示求真值。偏置值取啥合适?若按正常取 27=128 ,那么最大真值就变成 254128=126 ,最小真值变成 1128=127 。也就是左右各收缩一个真值。我们想想看,是为了多表达更多的大正数重要,还是表达一个极小的小数重要?更大的正数对吧!所以,偏置值往左挪一位,不能挪2位更不能3位,只用挪一个就可以表达移码本身能表示的最大正数127了。

所以,偏置值取的是127.

所以IEEE754单精度可以取得的阶码范围是 [126,127] ,也即负数收缩了两个,正数不变。

同理,对于双精度的IEEE754编码,也是同样的分析,阶码的真值范围是[-1022,1023]。

再联想到IEEE754编码的尾数隐藏了一个数据位,所以尾数至少是1,且用原码表示,所以就很容易知道所有IEEE754相关的数值范围问题了。
IEEE754:

  • 单精度:1, 8, 23(隐藏一位,实际精度是24位)
  • 双精度:1,11,52(隐藏一位,实际精度是53位)

比如,最小正值分别是: 1.0×21261.0×21022
最大正值分别是: (2223)×2127,(2252)×21023

普通的移码阶码就按照正常的分析即可,即偏置值取 2n,n

移码计算IEEE 754的过程如下: 1. 确定数值的符号位。根据给定的数值-0.75,符号位为1,表示负数。 2. 将数值的绝对值转换为二进制。对于0.75,绝对值为0.75,转换为二进制为0.11。 3. 确定数值的阶码。根据IEEE 754的规定,阶码需要通过移码表示。移码的计算方法是将真实的阶码值加上一个偏置值。对于float类型,偏置值为127。因此,阶码的计算为-1 + 127 = 126。将126转换为二进制为01111110。 4. 将符号位、阶码和尾数组合起来得到IEEE 754表示。根据IEEE 754的格式,float类型的表示为1 01111110 11000000000000000000000。 因此,将-0.75使用IEEE 754 float表示的结果为1 01111110 11000000000000000000000。 #### 引用[.reference_title] - *1* *3* [【计算机组成原理】IEEE 754](https://blog.csdn.net/weixin_45755831/article/details/127819163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [3.21趁着周末来个小总结,主要写的是是对原码,反码,补码和移码以及IEEE754的一些理解方法](https://blog.csdn.net/weixin_44875153/article/details/105010534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值