关于计算机组成原理中的补码原码和反码问题

    我们都知道计算机中数据计算采用的是二进制,采用的是补码。为什么采用补码呢,直接用原码不好吗?为什么要费那么大劲转化成补码的形式再进行计算。

其中一个最重要的原因是原码和反码在表示数字0的时候存在二义性,计算机无法判定

比如0000 0000原码表示的是数字0,1000 0000原码表示的是数字-0,(反码和原码的表示0的方式是一样的)

数字0在原码和反码表示方式中存在两种情况,   

补充:正数的原码,反码和补码是一样的

负数的反码=原码除符号位各位求反,

负数的补码=反码+1;

 

补码表示0的数值只有一种情况

0000 0000 +0的表示方式

1000 0000 求其补码=反码+1(1111 1111+1)=0000 0000最高位溢出了,符号位变成了0

 

所以说补码的0的表示方式只有一种不存在二义性,所以采用补码的形式计算

 

其中1000 0000的补码表示的是-128的补码

n位补码能表示的范围:有符号数是 -2^(n-1)到2^(n-1)-1  无符号数是 0-2^n-1

 

补充一下:关于原码和补码之间转化比较简单的一个方法:

 

大家都知道,对于计算机中的运算,都是以二进制的形式计算,那么很多时候,原码,反码,补码的计算是很烦人的(对于我来说吧),所以有一种简单的方式:

 

记住,以下是原码和补码互换的(负数),正数的补码反码和原码是一样的,这个你应该知道吧

(唯一的,也是独特的)规则如下:从数的右边往左开始数,遇到“0”不理它,直到遇到第一个“1”为止,以后的每一位数取反即是它的原码或补码,符号位不变,还是“1”(补码的补码是原码)

如原码:11010100 ----- 从右往左数,第一位是0,不理它,第二位还是0不理它,第三位是1,那么从此以后的每位取反,即为它的补码了.答案为:10101100

看懂了吗?

你的题目:101011 (求补码) 从右往左数,第一位是1,那么,以后每位都取反,来吧,跟我来,倒数第一位是1,倒数第二位是0(因为要取反了),倒数第三位是1,倒数第四位是0,倒数第五位是1,第六位是符号位,还是1.那么,最后的结果就是:110101

它的反码当然只是求反而已了(除符号位之外的其它各位都取反即可),答案为:110100

补码为101011,那么它的原码是什么?

按照我刚说的,补码的补码就是原码了.对这个数求补试试看.

会吗?一样的.从可往左数,倒数第一位是1,那么以后每位都取反就成它的原码了(因为这个数是一个补码),答案就是:110101

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值