计算机组成原理---如何将真值转成补码,原码,移码,反码。

引言(只想看怎么转换的可以跳过这一段)


数值数据(1,0.1..)在计算机中以(补码/原码/移码/反码)中的其中一种形式存在于计算机中。比如说22(无符号数)这个数,你要存在于计算机的话你总不可能直接在硬盘上存一个22啊,因为计算机的存储器中只能存储0和1.所以在计算机中存的肯定是22的二进制形式:10110。现在我们再来思考一下-22(带符号数)怎么存储呢?这个‘ - ’ 在计算机中怎么存储呢?


人们想到:我们自己规定一下+,-怎么表示不就完事了吗?(于是原码出来了)。


过了若干年后,人们发现:这些数字存储是没问题了,但是我存储了以后我还要对这个数字进行运算啊(+,-,*,/...),这个时候我们的数字如果在计算机中以原码的形式存储的话,对他们这些原码计算太麻烦了(于是补码出来了)。比如:计算-2 + 1 = ?。如果按照(三位)原码来计算 110 + 001 = 111. 111不是-3吗?很明显原码在计算的时候是不方便的,但是反之如果-2和1和补码表示的话:110 + 001 = 111。(怎么还是111,没什么变化啊?)其实这个是因为补码的表示方法不同于人们的思维啊!!(所以我才会写怎么变补码的啊)111 -》101-》-01-》-1。有同学可能看不懂我刚刚的怎么成111 变成 -1的,接下来就来说一下怎么变化的。


反码,移码。目前我也不知道为什么要出现。


说了这么多我们就来看看是怎么将正值转成各种码的吧。在这里不会涉及为什么补码是这样的一种规则只是告诉你怎么转。我也在网上曾经搜索过为什么补码是这种的规则但是怎么说呢,感觉没多少帮助。可能是对于我们这种初学者没多大的用处吧,不过感兴趣的还是可以去百度一下。


如何转换(一):定点整数的转换

在这个步骤的讲解中我们以:将-22转成7位的x码为例(x:原,补,移,反)

第一步:将真值转成:带符号的,满足位数的,二进制数字。

-22 -》 -10110(带符号)-》 -010110(7位要求)。

解释:不是说要7位吗?怎么我看到只有6位0 1 数字呢?是我眼睛瞎了?这是因为符号位在变成x码(x是什么?看前面的说明啊)的时候符号位也要占一位。有人会说为什么要第一步先怎么转呢?其实这不是硬性规定只不过是我在做题的时候总结出来的方法,大家也可以按照自己的方法来做。

第二步:判断正负,如何将其变成x码

                --》原码 1010110    将符号转成二进制就可以了。
-010110 --》补码 1101010    将符号转成二进制,然后对剩余的数据求补
                --》移码 0101010   将符号转成二进制,然后对剩余的数据求补
                --》反码 1101001   将符号转成二进制,然后对剩余的数据取反

在这一步中我们:首先判断符号位,因为 如果是正数的话只要将符号转成二进制就可以了剩余的数据 不管你是求什么码都是直接写就可以了的。只有 如果是负数的时候 才要对剩的数据进行进一步处理。在这里你可以注意一下为什么补码前面是11而原码是10.这个就是为什么我们在第一步的时候就把位数补全了的好处

定点小数点转换也是用前面点二步方法来完成点,只不过是在第二步将符号转成二进制点时候,小数点前面点0和+,-两个东西转成一个二进制而已。


题外话

如果用n位原码/补码表示真值的时候。他们各自可以表示的数字范围是什么呢?

答:n位二进制有2^n种状态。数字有正负之分。
原码:n位种有1位来表示符号位。剩下来的n-1位可以表示2^(n-1)种状态。每一种状态对应一个数字,所以表示的 数字范围(无符号数,你也可以理解成正数)数0~2^(n-1)-1.
例如:8位的原码,一位表示符号,剩下点7位表示数值(是值!!数字是:符号+数值如:-1是 - 和 1两部分)。剩下点7位可以表示2^7=128种状态0000000~1111111.



  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值