二进制补码运算

课题三    二进制补码运算
下面我们主要介绍在原码与补码运算中应注意的问题。
在原码运算时,首先要把符号与数值分开。例如两数相加,先要判断两数的符号,如果同号,可以做加法,如果异号,实际要做减法,减后的差作为两数之和,和数的符号与绝对值较大的数的符号相同。两数相减也是一样,首先要判断两数符号,然后决定是相加还是相减,还要根据两数的大小与符号决定两数之差的符号。
如果是补码运算则不存在符号与数值分开的问题。在补码运算时,把符号位也看成数值,一起参加运算,而且加法运算就一定是相加,减法运算就一定是相减,因此在计算机中对带符号的数进行加减时,最好使用补码。
补码的运算规则是:X+Y=(X+Y)
设有两个数xyx=-89y=+18,用补码表示如下
x=10100111B    (-89的补码)
y=00010010B    (+18的补码)
若求x+y之和,可不用考虑两数的符号,直接相加,得出的和为x+y=11000111B(-71的补码),可见直接相加结果是正确的。
(列出算式)
若求x-y之差,也可以直接相减,即
x=101001l1B    (-89的补码)
-y=00010010B    (+18的补码)
x-y=10010101B    (-107的补码)
可见直接相减结果也是正确的。
若求y-x之差,同样也用减法,即
y=00010010B    (+18的补码)
-x=10100111B    (-89的补码)
y-x=101101011B    (+107的补码手动调速永磁耦合器)
也就是说做减法时,不论两数符号如何,其相减结果不论是数值还是符号都是正确的。
在上述y-x算式中,最高位发生的进()位只是因为在字长为8位的计算机中,若运算结果并未超出补码的记数范围(-128+127),这时的进(借)位被视为自然丢弃。计算机在运算中,这种自然丢弃并不影响结果的正确性。
但要注意,如果字长为8位的计算机,其计算结果超过8位补码所允许的表示范围(即超出-128+127),则其进位称之为溢出。溢出和自然丢弃是两种不同的概念。判别属于哪一种,则要看计算结果第7位与第8位的进位情况,如果第7陶瓷接线柱位和第8位同时产生进位,即所谓双进位,则这种进位属于允许的自然丢弃。如果只有第7位或者只有第8位产生进位,即只有单进位,则这种进位属于溢出,溢出表示其数值超出计算机字长所能表示的范围,运算结果必然是错误的,因而也是不允许的。
应当注意的是,溢出的概念主要是指带符号二进制数进行加减运算时可能产生的一种结果。
对于无符号数,第8位不是符号位,只有第8位的进位才称为进位,而不采用溢出这个概念。
对于无符号数的运算还应注意一点,当两个无符号数相减时,不允许用小的数去减大的数,因为小减大它的差一定是负数,无符号数的前提是没有符号,显然也不允许有负数,如果这样做,减的结果也必然是错误的。
五、字符的编码
(一)ASCII
(二)BCD
BCD码也叫做十进制编码,有压缩和非压缩两种存储形式。压缩的BCD码是用半个字节存放一位十进制数,一个字节存放两位十进制数。
18421 BCD
1-5  常见BCD码编码表
十进制
8421 BCD
3
格雷码
0
0000
0011
0000
1
0001眼部凝露
0100
0001
2
0010
0101
0011
3
0011
0110
0010
4
0100
0111
0110
5
0101
1000
0111
6
0110
1001
0101
7
0111
1010
0100
8
1000
1011
1100
9
1001
1100
1101
2热力井.余3
3码是无权码,它具有良好的代码校验性。这种编码转换成十进制数后,每个代码的值比相应的十进制数多3。见表1-5。例如,十进制数6,它对应的余3码是1001=9;十进制数7对应的余3码是1010=10;它们都比十进制数大3。因此,这种BCD编码形式称为余3码。
3.格雷码
格雷码也是一种无权的BCD编码形式,其特点是相邻两位的代码,仅有一个码位变化。这种编码抗干扰能力强,常用于计算机控制的机床的角编码器、轴位编码等。
(三)奇偶校验码
奇偶校验是一种常用的简单的校验方法,在计算机内常用作存储器读写校验、ASCII字符传送中的校验等。
奇偶校验码是在传送的代码上附加一个校验位,作为代码的比较校验。这样在接收方,先对信息代码按双方的校验规定求奇偶校验码,然后再与收到的附加校验位作比较,若相等则认为接收的代码是正确的,若不相等则认为接收的代码是错误的。
实际上,奇偶校验就是鉴别代码中有奇数个“1”,还是有偶数个“1”。例如,有效信息为 1011001,若采用偶校验码记为“0”的话,则有效代码为10110010;若采用奇校验码记为“1”的话,有效代码则为10110011。有效代码的最后的那个数位,就是奇偶校验位。当接受方收到这组代码后,便根据奇、偶校验的约定和有效代码中“1”的个数形成校验码,然后再与接收的校验位作比较。比较相等的话,说明接受的信息正确;反之,则认为出现了错误。
奇偶校验只能发现一位错,但不能确定出错的位置,对偶数个错位便无能为力了。但在实际应用中,一位出错的概率比多位出错的概率高,因此,奇偶校验码还是很实用的。另外,还有一些具有纠错能力的校验编码,如海明码、冗余循环校验码等。有兴趣的读者可阅读了解有关纠错码方面的书籍。
关于课本9520kv高压直流电源页例3-2-1的详细分析,原题:试采用4位加法器实现1位余三码到18421BCD码的转换。
观察余三码和8421BCD码规律发现,相应的余三码和8421码所对应的二进制字符串转换为十进制数后相差三,因此可以采用相应十进制数码的余三码减去三得到该十进制数码所对
应的8421BCD码,完成余三码到8421BCD的转换。如果用加法器进行实现,就得考虑采用反码或者补码,书中是用补码完成减三操作的。
根据补码的运算规则要把两个数都要变换成补码,符号位参与运算,进位自动丢弃,结果仍为补码。
余三码的补码为 0E3E2E1E0前面的0是符号位指代正数,3的二进制为0011,其反码为1100,因此其补码为110011101,所以-3的补码为11101,第一个1是符号位,代表负数。
1 EEEE0
扎带+ 1  1  1  0  1
1  0  FFFF0
由于是两个异号数相加,因此不存在溢出问题,红的1是要自动舍弃的进位。结果为0 F3 F2 F1 F0,首位的0是符号位指代正数,因此其源码仍为0 F3 F2 F1 F0,其绝对值为 F3 F2 F1
F0,刚好应为相应的8421BCD码,因此由于结果是正数的补码表示,其补码表示中的数值位就应该是源码本身,不需要进一步处理。由于 F3 F2 F1 F0只与E3E2E1E01  1  0  1的和有关,仔细分析就是两者之和,故可以采用四位二进制加法器实现,E3E2E1E0作为加法器的第一组数,1  1  0  1作为加法器的第二组输入,其和数就是F3 F2 F1 F0,于是得到下图,进而完成余三码到8421BCD码的转换。

本文发布于:2024-09-22 01:56:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/102081.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:运算   符号   补码   代码   校验   编码   进位   结果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议