(39)10的原码,反码,补码分别是什么

(39)10的原码,反码,补码分别是什么,第1张

如果是在字长为8位的计算机上,

+0的原码是00000000

-0的原码是10000000

+0的反码是00000000

-0的反码是11111111

+0和-0的补码均为00000000

无论什么类型的数字,在计算机中,都是以“二进制代码”存储的。

下面按照八位二进制来说明,其它位数,自行脑补。

十进制数 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 的范围,结果将是错的。

 这种现象称为“溢出”。

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

---------

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

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

原码反码 的用途,仅仅是用于“心算、笔算”。

其实,笔算的方法,并非只有“取反加一”。

另外,-128,有补码,但是却没有原码反码!

用“取反加一”来求-128 的补码,无异于缘木求鱼。

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

但是,考试怎么办?

呃 ,还是别跟老师较劲,他怎么乱讲,你就怎么答吧。

在计算机中,负数以其正值的补码形式表达。

什么叫补码呢?这得从原码,反码说起。

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

比如

00000000

00000000

00000000

00000101

5的

原码。

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反 *** 作指:原为1,得0;原为0,得1。(1变0;

0变1)

比如:将00000000

00000000

00000000

00000101每一位取反,

得11111111

11111111

11111111

11111010。

称:

11111111

11111111

11111111

11111010

00000000

00000000

00000000

00000101

的反码。

反码是相互的,所以也可称:

11111111

11111111

11111111

11111010

00000000

00000000

00000000

00000101

互为反码。

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

比如:

00000000

00000000

00000000

00000101

的反码是:

11111111

11111111

11111111

11111010。

那么,补码为:

11111111

11111111

11111111

11111010

+

1

=

11111111

11111111

11111111

11111011

所以,-5

在计算机中表达为:

11111111

11111111

11111111

11111011。转换为十六进制:0xfffffffb。

再举一例,我们来看整数-1在计算机中如何表示。

假设这也是一个int类型,那么:

1、先取1的原码:00000000

00000000

00000000

00000001

2、得反码:

11111111

11111111

11111111

11111110

3、得补码:

11111111

11111111

11111111

11111111

可见,-1在计算机里用二进制表达就是全1。16进制为:0xffffff。

128=10000000

按位取反:01111111

加1

:10000000

没有溢出,因为没有别的数用10000000来表示。这都是定义好的,记住就是了

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

计算机中,根本就不使用原码和反码。

补码的功能,类似于:

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

按照这种思路,计算机中的负数,当然也可以用正数(即补码)代替。

如果这样,计算机中,就没有负数了。

同时,减法运算,也都不存在了。

那么,借助于补码,就能去掉计算机中的减法运算,从而就能简化计算机的硬件。

这就是使用补码的原因。

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

在钟表中,时针转一圈,周期是 12。

正拨 9 代替倒拨 3,其算法是:9 = -3 + 周期 12。

分针,倒拨 X 分,也可用正拨(-X + 周期 60)代替。

在三角函数中,周期是 2π。

一个负角度,也能用周期,算出等效的正角度。

如:-π/2,就可以转换成成:+3π/2。

上述这些正数,就是“负数的补数”。

求补数的公式:

补数 = 负数 + 周期。

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

在计算机中,8 位 2 进制,称为一个字节。

其计数周期是:2^8 = 256。

那么,求负数补码的公式:

补码 = 负数 + 周期 2^n。

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

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

。。。

正数,则必须直接参加运算,不许作任何转换。

即:正数,根本就不存在补码。

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

例如,7-2 = 5,用八位补码计算如下:

7 = 0000 0111

 [-2] 补 = 1111 1110

--相加------------

得: (1)   0000 0101  = 5

舍弃进位,结果就完全正确。

由此可知,借助于补码,确实就消除了减法运算。

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

补码,是从计数系统的周期性,推导出来的。

补码与“原码反码符号位”,并无半点关系。

由“取反加一”学习补码,就不会理解补码的作用和产生的原因。

那么,为什么要定义原码、反码、符号位?

老外数学不好,也就只能用这些骚 *** 作,来求补码了。

把十进制数转换成二进制数后,二进制数就是原码

例如:十进制:2 -----> 二进制:10

“二进制:10“就是原码

为了凑够8位,在二进制10前面加6个0,变成00000010

2的原码:00000010

2的反码:00000010

2的补码:00000010

也就是,正数的原码,反码,补码都相同

下面是负数的原码、反码、和补码:

3的原码:00000011 -3的原码:10000011 也就是最左边的那个数表示正负,0代表正,1代表负,它也叫符号位

-3的原码:10000011

-3的反码:11111100 负数的反码是对其原码按位取反,符号位不变

-3的补码:11111101 负数的补码是在其反码的末位加1

计算机用补码计算

数据在内存里是以补码的形式存储的原因有三点:

1、保证了0的唯一性,保证了数的表示的准确性。

2、让加减可以统一处理,优化了数的运算过程。

3、解决了自身逻辑意义的完整性。

数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。在计算机系统中,数值一律用补码来表示和存储。

扩展资料:

补码的主要特性:

补码为一个负整数(或原码)与其补数(或补码)相加,和为模。在补码的运算中,对一个整数的补码再求补码,等于该整数自身。补码的正零与负零表示方法相同。计算机底层不区分无符号数和补码数,可认为其运算全部当作无符号数处理。

补码使得符号位能与有效值部分一起参加运算,从而简化运算规则。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。

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

以上就是关于(39)10的原码,反码,补码分别是什么全部的内容,包括:(39)10的原码,反码,补码分别是什么、什么是补码,怎么计算、计算机中的补码是什么意思,能给最好给几个例子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9843077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存