×

原码补码 原码

计算机原码补码的计算?电脑中原码和补码是什么关系

admin admin 发表于2022-09-02 21:43:31 浏览126 评论0

抢沙发发表评论

本文目录

计算机原码补码的计算


计算机原码补码的计算方法:

1、原码:在计算机中的机器字长的最高位(最左边)表示正负,0为正数,1为负数,原码就是最高位是符号位,其余位表示数值(绝对值)大小。

2、反码:正数的反码就是其本身(原码)不变,而负数的反码就是在负数原码的基础上符号位保持不变,其余位按位取反。

3、补码:正数的补码就是其本身(原码),而负数的补码就是在原码的基础上符号位保持不变其余位按位取反,然后再+1,即在反码的基础上+1。

总结:正数的原码、反码和补码都一样,都等于原码。负数的反码就是在原码的基础上符号位不变其余位按位取反,负数的补码就是在反码的基础上+1。

扩展资料:

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。-原码补码

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中00000001+10000001=10000010,换算成十进制为-2。显然出错了。所以原码的符号位不能直接参与运算,必须和其他位分开,这就增加了硬件的开销和复杂性。-原码

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

补码“模”概念的引入、负数补码的实质、以及补码和真值之间的关系所揭示的补码符号位所具有的数学特征,无不体现了补码在计算机中表示数值型数据的优势,和原码、反码等相比可表现在如下方面:

(1)解决了符号的表示的问题;

(2)可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计;

(3)在计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易;

(4)补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。

参考资料:百度百科-原码、百度百科-补码


电脑中原码和补码是什么关系


原码,反码,补码是机器存储一个具体数字的编码方式。原码跟补码之间的关系是:正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1。

在计算机系统中,数值一律用补码来表示和存储。使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中00000001+

10000001=10000010,换算成十进制为-2。

扩展资料

原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂。一个字长为n的机器数能表示不同的数字的个数是固定的2^n个,n=8时2^n=256;

用来表示有符号数,数的范围就是 -2^(n-1) ~ 2^(n-1)-1,n=8时,这个范围就是 -128 ~ +127。但是在不需要考虑数的正负时,就不需要用一位来表示符号位,n位机器数全部用来表示是数值,这时表示数的范围就是0~2^n-1,n=8时这个范围就是0~255.没有符号位的数,称为无符号数。-原码补码

参考资料来源:百度百科-原码

参考资料来源:百度百科-补码


原码,反码,补码的编码规则


计算机中,使用 1、0 构成各种代码。

对于正负数字,只是使用【补码】来存储与计算。

原码反码,在计算机中,都是不存在的。

补码的编码规则如下:

十进制数字 0,其补码就是:0000 0000。

-1,就是“零减一”,即:0000 0000-1。

用二进制减法计算,可得:(1) 1111 1111。

机器数,只有 8 位,即:1111 1111 = 255(十进制)。

这就是-1 的补码。

继续减一,可得-2 的补码:1111 1110=254。

同理,-3 的补码是:1111 1101 = 253。

。。。

求负数补码的通用公式:-X 的补码=256-X。

(其中的 256,是 2 的 8 次方。可用十进制计算,有需要再转二进制。)

正数,不需要变换。

这就是补码的编码规则。

由此可见,补码,与原码反码毫无关系。

计算机中,也并不使用原码和反码。


原码和补码是什么意思


原码,没有任何意义。

补码具有:用正数代替负数,把减法变成加法运算的功能。

这样,计算机中,只需用一个加法器,便可进行加减运算了。

所以,在计算机中,只是使用补码。根本就不用原码和反码。

对于钟表,倒拨 4 小时,可用正拨 8 小时代替。

对于十进制数,减一,可以用 +99 代替。

比如:24-1 = 23

   24 + 99 = (1) 23

忽略进位,只取低两位,结果就是相同的。

这里用来代替负数的正数,就叫做“补数”。

计算机用二进制,就叫做“补码”。

正数,直接运算即可,不用求补码。

负数的补码是:模+该负数。

八位二进制的模是:2 的 8 次方=256。

-1 的补码,就是:256-1 =255 = 1111 1111(二进制)。

-2 的补码,就是:256-2 =254 = 1111 1110(二进制)。

。。。 。。。

-128 的补码,就是:256-128 =128 = 1000 0000(二进制)。

求补码,用公式就可得出,并不需要绕道原码反码符号位。


什么是原码,补码和反码


正负数,在计算机中,只是用【补码】来存储。

而原码和反码,在计算机中,并不存在。

下面按照八位二进制来说明补码的意义。

十进制数 0,存放形式,就是二进制 0000 0000。

十进制数 +1,就加上 1,二进制是 0000 0001。

十进制数 +2,就再加 1,二进制是 0000 0010。

。。。

十进制数 +127,加 1加 1...,就加到了 0111 1111。

+127,这就是最大数值。

----------

负数怎么办? 你就从 0,依次递减吧。

十进制数 0,以二进制 0000 0000 存放。

十进制数 -1,就减去 1,得 1111 1111 = 255(十进制)。

十进制数 -2,就再减 1,得 1111 1110 = 254。

十进制数 -3,就再减 1,得 1111 1101 = 253。

。。。

十进制数 -128,减 1减 1...,得 1000 0000 = 128。

不要再减了,这就是最小值了。

(你再继续减,就是 0111 1111,这就是+127 了。)

因此,最小数值就是-128。

----------

总结:

  零和正数:直接用二进制存放。

  负数:存放形式是【256+这个负数】。

这套存放格式,就是所谓的【补码】。

 

求【补码】,就是这么简单。

完全不用绕到“原码反码符号位”那么远。

可以用十进制来计算。如果需要二进制,你就再转换一下。

用这个方法,不涉及原码反码符号位,就少了不少麻烦事。

----------

为什么负数用补码存储?

 利用补码,可以把减法运算,转换成加法。

 (所以,在计算机中,有一个加法器,就够用了。)

例如,6-2 = 4,在计算机中,用补码代替数字,运算如下:

    6 的补码是 0000 0110

 + -2 的补码是 1111 1110

-----------------

       (1) 0000 0100   (= 4 的补码)

 (括号中的 1,是进位,舍弃不要了。)

注意:

 如果运算结果超出了-128~+127 的范围,结果将是错的。

 这种现象称为“溢出”。

 再注意一下:进位,并不等于溢出。

---------

因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。

而原码反码,在计算机中,都是不存在的。

所以,大家,完全不必在原码反码 上浪费时间精力。


原码与补码的转换


1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反” 。

2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。

3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。

4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。

5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。


什么叫原码 补码 反码 他们之间怎么运算的


计算机中,并没有原码和反码。

计算机中,只是使用补码,代表正负数。

补码和正负数,有个一一对应的关系式:

 零和整数的补码,就是该数本身。

 负数的补码=模+该负数。


原码,反码,补码的作用和产生的原因是什么


原码反码,毫无用处。

只有补码,才有:把减法转化为加法的功能。

所以,在计算机中,只是使用补码,根本就没有原码反码。

那么,原码反码产生的原因是什么?

计算机砖家,故弄玄虚而已。


计算机如何区别原码与补码


使用补码的意义在于:可把负数变正数,可把减法变加法。

从这个实用性来讲,计算机中,只是用补码。原码根本就不存在。

-------

计算机,是执行程序的。程序,都是由人,编写的。

所以,不是计算机来区别原码、补码。

而是由人,来区别。

-------

如果限定,只是使用两位十进制数 0~99,共有一百个。

那么,减一,就可以用 +99 代替:

  24 - 1 = 23

  24 + 99 = (1)  23

只保留两位,忽略进位,结果就是相同的。

99,就称为-1 的补数。

-------

看到了吗?  出现了进位。

如果你忽略了进位,实际上就是减法运算!

--这时,99 就是补数,是当做-1 来用的。

如果不忽略进位,结果就是 1 百 23,这还是加法运算。

--此时,99,就是正常的数字。

。。。。。。

一个代码,到底是原来的数字,还是代表负数?

就看你怎么对待它了。

这些都是由编程人,来决定。

计算机,它才不管这些。


原码,反码,补码的定义是什么


有符号数,有三种表示方法,即原码、反码和补码。

但是,在计算机系统中,数值一律用补码来表示和存储。

所以,在计算机系统中,原码和反码,都是不存在的。

----------

想要理解补码,要先从补数开始。

钟表的时针转一圈,周期是 12 小时。

倒拨 3 小时,就可以用正拨 9 小时代替。

9 就是-3 的补数。 9 = 12-3。

同理,分针倒拨 X 分,就可以用正拨(60-X)代替。

60 是分针的周期。

------

对于两位十进制 0~99,周期就是一百。

这时,减一,你就可以用 +99 代替。

   25 - 1 = 24

   25 + 99 = (1) 24

结果取两位,舍弃进位。这两种算法,功能就是相同的。

   99,就称为-1 的补数。

   98,就是-2 的补数。

   。。。

   负数的补数 = 周期 + 该负数。

利用补数,就可以用加法,代替减法运算。

正数,不需要求补数。

------

计算机使用二进制,补数,就改称:补码。

八位二进制,共有 256 个数字。负数的补码 = 256+该负数。

16 位二进制,共有 2^16 个数字。负数的补码 = 65536+ 该负数。

这就是补码的定义式。在你的书上,一定能找到这种算式。

------

在八位时:

 -1 的补码是:256-1 = 255 = 1111 1111(二进制)。

 -2 的补码是:254 = 1111 1110。

 -3 的补码是:253 = 1111 1101。

 。。。

 -128 补码:128 = 1000 0000。

------

有了补码,计算机仅需要一个加法器,就可以加减通用了。

而原码和反码,不具备这种能力。

所以,原码和反码,究竟是怎么定义,就不必关心了。

因为,它们,毫无用处。