关于二进制原码和补码和原码的转化问题

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

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

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

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

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

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

负数的补码和原码的转化=反码+1;

补码和原码的转化表示0的数值只有一种情况

求其补码和原码的转化=反码+1()=最高位溢出了,符号位变成了0

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

其中的补码和原码的转化表示的是-128的补码和原码的转化

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

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

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

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

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

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

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

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

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

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

}

我要回帖

更多关于 补码和原码的转化 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信