导航:首页 > 源码编译 > 利用加法器实现源码转化补码

利用加法器实现源码转化补码

发布时间:2022-05-01 12:51:15

‘壹’ 原码,补码,反码的应用

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

借助于补码,负数和减法,都可以转化成加法来进行运算。

那么,计算机的硬件,就可以简化了。

因此,在计算机中,只有加法器,并没有减法器。

原码和反码,都没有什么用,也可以说,根本就没有用!

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

补码是怎么回事?这得从“补数”谈起。

计算机所能计算的位数,是固定的,如八位机、16 位。。。

位数限定之后,就可以用“补数”代替负数,用加法实现减法运算。

限定两位十进制,-1,就可以用 +99 代替。

例如:

25 - 1 = 24

25 + 99 = (一百) 24

舍弃进位,只取两位,这两种算法,功能就完全相同。

99,就是-1 的补数。计算公式:补数 = 一百+负数。

一百,是用两位十进制数,循环计数的周期,10^2。

这个周期,在计算机专业,又称为“模”。

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

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

八位二进制:0000 0000 ~ 1111 1111 (十进制 255)。

循环计数的周期,是:2^8 = 256。

求负数补码的计算公式,也是: 周期 + 负数。

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

用不存在的“原码反码取反加一”来求,也是这个结果。

正数,不用转换,直接参加运算。

也可以说:正数自身就是补码。

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

举例说明,如: 5 - 7 = -2。

用补码计算的过程如下:

5 的补码=0000 0101

-7的补码=1111 1001

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

(1) 1111 1110 = -2 的补码

舍弃进位,只保留八位,这就用加法,实现了 5-7。

‘贰’ 原码,反码,补码怎么解释

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

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

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

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

这种现象称为“溢出”。

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

---------

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

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

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

‘叁’ 一个数的原码,反码,补码

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

在计算机中,只用补码表示正负数。

使用补码的意义:可用加法,代替减法运算,从而简化计算机硬件。

------

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

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

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

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

同理,分针倒拨 X 分,也可以用正拨“60-X”代替。

60 是分针的周期

三角函数的周期是 2π。

那么,-π/2 和 +3π/2 处的函数值,必定是相同的。

所以,这正负两个角度,也是可以互相替换的。

------

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

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

25 - 1 = 24

25 + 99 = (1) 24

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

99,就称为-1 的补数。

98,就是-2 的补数。

。。。

其它补数,你自己都会求的。

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

补数怎么求?

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

正数,不需要求补数。也可以说,本身就是补数。

------

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

八位二进制,共有 256 个数字。周期就是 256。

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

16位二进制,共有 2^16 个数字。周期就是 65536。

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

正数,不需要做变换。或者说,正数本身就是补码。

那么,在八位二进制时:

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

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

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

。。。

-128 补码:128 = 1000 0000。

------

补码的应用如: 7-3 = 4。

用补码的计算过程如下:

7 的补码=0000 0111

-3的补码=1111 1101

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

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

舍弃进位,只保留八位,结果肯定正确。

------

有了补码,计算机,仅需配置一个加法器即可。

而原码和反码,并没有这种能力。

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

原码和反码,根本不存在。

它们都是多少呢?就不必关心了吧。

‘肆’ 计算机原码反码补码怎么算

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

1、原码

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]

即[-127 , 127]

原码是人脑最容易理解和计算的表示方式。

2、反码

反码的表示方法是:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

可见如果一个反码表示的是负数,人脑无法直观地看出来它的数值。通常要将其转换成原码再计算。

3、补码

补码的表示方法是:正数的补码就是其本身。负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)。

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。

(4)利用加法器实现源码转化补码扩展阅读:

原码,反码和补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢?

首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂。于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。

于是人们开始探索将符号位参与运算,并且只保留加法的方法。

‘伍’ 原码,反码,补码的编码规则

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

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

==============

下面以八位二进制来说明补码的编码规则。

八位二进制,共有 256 个补码。

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

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

其它,继续加,就行了。

数字 127,就是 0111 1111。

以上就是 0~127 的补码。

==============

负数,递减就行了。

数字-1,就从 0,减去一,即:

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

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

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

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

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

数字-128,最后就得到:1000 0000(= 128)。

以上这些,就是-1~-128 的补码。

==============

计算公式:

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

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

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

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

==============

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

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

例如: 7-3 = 4。

用补码的计算过程如下:

7 的补码=0000 0111

-3的补码=1111 1101

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

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

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

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

------

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

所以,在计算机中,根本就没有原码和反码。

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

计算机,可不做这些事。

‘陆’ 原码为何要转换为补码呢

因为加法器。
CPU的加减法是加法器完成的。
当然我们都知道
加上负数就代表减法,CPU也是这么做的。
但问题在于,机器指令,加法ADD,减法SUB。
加法器是只不过是个机器,他的行为很简单。二进制电路的位逻辑表达很简单,就是数1bit位,数2bit位,进行异或,然后再和进位标志异或,结果为当前位的值。
如果三个数有2个是1,就会进位。
逻辑很简单。
拿char来说,
16+16=32,
16+(-16)=0。
二进制
ADD
0001
0000+00010000,答案是0010
0000
就是32。没问题。
假设仅仅用第一位为符号位,其他位是数字
16+(-16)=
0001
0000
+
1001
0000=
1010
0000
,很可惜这个数是
-32
16+(-16)=-32,悲剧发生。如果用补码,你就发现奇迹了。。。

‘柒’ 利用加法器设计一个代码转换电路,将bcd代码的8421码转换成余3码

根据余3码的定义可知,余3码是由8421码加3后形成的代码。所以,用4位二进制并行加法器实现8421码到余3码的转换,只需从4位二进制并行加法器的输入端A4、A3、A2和A1输入8421码,而从输入端B4、B3、B2和B1输入二进制数0011,进位输入端C0接上“0”,便可从输出端F4、F3、F2和F1得到与输入8421码对应的余3码。

‘捌’ 原码的减法为什么可以转换成补码的加法意义又是什么呢

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

限定两位数时,减一,就可用+99代替。

如:24-1=23

24+99=(1)23

只取两位数,两个结果,就是相同的。

99,就是-1 的补数。

(在二进制时,就称为“补码”。)

就是说:当限定计算的位数后,使用补码,就可用加法代替减法运算

意义:仅用一个加法器,就可做加减两种运算。减少硬件,厂家省钱。

‘玖’ 试用全加器74LS283及相应门电路设计电路,得到二进制数ABCD(原码)的补码A'B'C'D'()

有什么问题可以继续问 记得给分

‘拾’ 正数的补码等于原码是如何算出来的

这是规定。

补码是为负数想出来的办法,目的是减法可以用加补码的方法实现,补码可用反码加1得来,于是又有了负数的反码。

计算机里有硬件“加法器”,有了补码,减法也可以用加法器做了,计算机里运算速度硬件远快于软件,这就是反码,补码和原码多样化的原因。

(10)利用加法器实现源码转化补码扩展阅读:

原码求补码

正数

正整数的补码是其二进制表示,与原码相同 。

例:+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。)

负数

求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。

阅读全文

与利用加法器实现源码转化补码相关的资料

热点内容
福州溯源码即食燕窝 浏览:232
当乐服务器怎么样 浏览:713
nc编程软件下载 浏览:382
如何限制手机app的使用 浏览:307
安卓华为手机怎么恢复桌面图标 浏览:956
我的世界电脑版服务器地址在哪找 浏览:533
违抗了命令 浏览:256
安卓如何实现拖拽放置 浏览:91
净资产收益率选股指标源码 浏览:599
血压力传感器计算公式单片机 浏览:466
全网接口vip影视解析源码 浏览:916
如何破解服务器远程密码错误 浏览:377
平安深圳app如何实名认证 浏览:500
linux网络监控软件 浏览:889
内网服务器如何上传文件 浏览:140
程序员在你心中是什么 浏览:1
苹果手机怎么找回app账号 浏览:466
房屋中介网站源码 浏览:29
命运格数算法 浏览:852
ets3编程 浏览:730