b2c信息网

您现在的位置是:首页 > 今日新闻 > 正文

今日新闻

源码反码补码的范围(源码 反码 补码的意义)

hacker2022-06-28 14:26:23今日新闻102
本文目录一览:1、什么是原码,补码和反码2、

本文目录一览:

什么是原码,补码和反码

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

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

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

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

 这种现象称为“溢出”。

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

---------

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

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

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

谁能告诉我计算机的原码补码和反码的具体定义是什么?

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

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

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

不存在的东西,也就不必关心了。

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

下面,针对补码,给出解释。

比如,有一个小孩,很小的。

他只认识 100 个数(0~99),也不会做减法。

那么,就可以告诉他:“减一”,就用“加 99”算吧。

36 - 1 = 35

36 + 99 = (1) 35

忽略进位的  100,结果不是一样的吗?

那么,就是说:

 99,就是-1 的补数。

利用“补数”,就可用“加法”代替“减法”。

这就可以简化计算机的硬件。

计算方法:

 -1 的补数 = 100 - 1

其中的 100,是两位十进制数的:周期。

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

在计算机中,是以二进制存放各种信息的,统称为:代码。

八位,作为一个计算单位。

范围是:0000 0000 ~ 1111 1111。

写成十进制,就是:0~255。计数周期就是:256。

那么:

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

 1111 1110 = 254,就是-2 的补码。

 。。。

 1000 0000 = 128,就是-128 的补码。

计算公式: 补码 = 周期 + 负数。(再变为二进制。)

求负数的补码,就是这么简单。

正数,直接参加运算即可,不许做任何变换。

因此,补码的定义,如下:

正数的补码: 正数,没有补码,直接运算。

负数的补码: 周期 + 该负数。

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

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

原码和反码,只能写在纸上,或停留在口中。

无论它们是怎样定义的,都是毫无意义的事。

原码反码补码的范围

如果采用一个字节来保存有符号数,那么原码的八位,表示的范围是-127----+127

八位反码的表示范围是-127-----+127

八位补码的表示范围是-128------+127

什么是原码、反码、补码?

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

正负数据,在计算机中,只是以补码存放的。

以八位二进制来说明补码结构。

数字 0,就是以 0000 0000 存放。

数字 1,就是加上 1,得 0000 0001。

其它,继续加,就行了。

数字 127,就是 0111 1111。

------

数字-1,就是 0 减一,即:

0000 0000-1 =(借位 1)  1111 1111。

只保留八位,存放形式就是 1111 1111 (十进制 255)。

数字-2,就再减一,得:1111 1110 (= 254)。

数字-3,就再减一,得:1111 1101 (= 253)。

其它,继续减,即可... ...

数字-128,存放形式就是:1000 0000 (= 128)。

------

以上这些,就是补码。

八位补码可以表示:-128~+127。

计算公式:

 负数的补码=【256+该负数】

 正数的补码,就是正数本身

(如果需要二进制,你自己再变换。)

------

用补码代替负数,就可以把减法,转换为加法运算。

因此,计算机只要有一个加法器,就够用了。

例如: 7-3 = 4。

用补码的计算过程如下:

7 的补码=0000 0111

 -3的补码=1111 1101

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

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

舍弃进位,只保留八位作为结果,就是 4。

这就用加法,解决了负数以及减法的问题。

------

原码和反码,并没有这些功能。

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

所谓的“取反加一”,由谁算呢?

计算机,可不做这些事。

原码和补码的表示范围?

如果是n=8位二进制:

原码范围:-127~+127,写成16进制为FEH~7FH

补码范围:-128~+127,写成16进制为FFH~7FH

如果是n=16位二进制:

原码范围:-32767~+32767,补码范围:-32768~+32767

如果是n=32位二进制:

原码范围:- 2 32-1 –1 ~+ 2 32-1  –1 ,补码范围:- 2 32-1 –1 ~+ 2 32-1  –1

 

原码公式:- 2 n-1 –1 ~+ 2 n-1  –1

补码公式:- 2 n-1  ~+ 2 n-1  –1

(公式中的n-1是指数)

发表评论

评论列表

  • 萌懂戈亓(2022-06-28 17:33:42)回复取消回复

    费时间精力。谁能告诉我计算机的原码补码和反码的具体定义是什么?带符号数,有三种表示方法,即:原码、反码和补码。但是,在计算机系统中,数值一律用【补码】来表示和存储。所以,在计算机系统中,原码和反码,都是不存在的