计算机组成原理----移码

在网上搜索移码是什么,大概率会搜到一个结论:移码是补码符号位取反,可是真的是这样吗?

传统的有符号整数是将二进制数的首位作为符号位,0表示正数,1表示负数。

但在移码中,我们不再使用单独的符号位来表示正负。而是通过一个固定的偏置量来将所有可能的指数值映射到一个无符号的整数范围内。所以移码也叫偏置表示法。对于IEEE 754浮点数标准,这个偏置量通常是2^{(k-1)}-1,其中(k)是阶码的位数。例如,对于单精度浮点数,阶码有8位,那么偏置量是2^{(8-1)}-1=127。至于为什么要设置为127,可以看看这篇:

​​​​​计算机组成原理 - 浮点数偏移量为127的理解 - amazzzzzing - 博客园 (cnblogs.com)

也就是说,在移码中,我们讨论的仍然是有符号整数,只是通过一个偏置量使得所有的表示都是非负的。阶码占据8位,他能表示的无符号整数就是0~255(2^8=256)(由于移码表示的都是无符号数,所以在移码中,没有符号位这个概念)。然而,由于IEEE 754标准中需要为特殊值(如无穷大、非数字NaN等)保留一些阶码值,因此不是所有的256个值都用于表示真值指数。

在IEEE 754标准中,阶码为0(0000 0000)时用于表示非规格化数或零,所以阶码的最小值是1。同理,阶码为255(1111 1111)时,用于表示无穷大(Infinity)或非数字(NaN)。所以阶码的最大值是254,对应的真值指数就是-126(1 - 127) ~ 127(254 - 127)。

所以移码的运算(以-2为例):

真值指数是-2,偏置值是127,移码=-2+127=125,二进制表示为0111 1101,所以阶码=0111 1101。这才是移码真正的运算方式,如果照网上说的:"补码符号位取反",-2的移码=0111 1110。可以看到这两个值是不等的。

对于网上说的"移码是补码符号位取反",只有在偏移量为128的情况才能实现。而且只是数值上恰好相等,实际运算中还是要依靠偏置值来算移码,所以移码和补码本质上没有什么关系。而在IEEE 754标准中,偏移量是被设为127的。具体想深入了解,可以看看此篇博客:

浮点数的表示和运算


如果佬们有异议,请不吝赐教!💖💖💖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值