规则:
例1:X=0.001,Y=0.101,计算X+Y(这里以定点小数为例,最高位为符号位,以下同)
解:
X+Y = 0.110
例2:X=-0.010,Y=-0.011,计算X+Y
解:
符号位左边的位按2取模后舍弃。
规则:
的计算方法是将
的符号位和数值位取反再加1。
例1:X=0.101,Y=0.010 ,计算X-Y
解:
符号位左边的位按2取模后舍弃。
双符号位法采用两个符号位,如果两个符号位相同,则没有溢出;如果不同,则表示出现溢出。
例1:X=0.001,Y=0.101,计算X+Y
解:
结果中两个符号位为00,这说明计算中没有溢出。
例2:X=0.110,Y=0.101,计算X+Y
解:
结果中两个符号位为01,这说明计算中存在溢出。
也可以通过进位信号来判断,当结果的最高位和符号位的进位信号一致时(都有进位信号或都没有进位信号),则没有溢出,否则表示有溢出。
例:
符号位没有进位,而数值位有进位产生,则说明有溢出发生。
浮动数运算过程比定点数复杂,包括以下过程。
(1)对阶
首先计算两个数的指数差,把指数小的向指数大的对齐,并将尾数右移指数差的位数,这样两个浮点数就完成了对阶的操作。可以看出,对阶的过程可能使得指数小的浮点数失去一些有效位。如果两个浮点数阶数相差很大,大于指数小的浮点数的尾数宽度,那么对阶后那个浮点数的尾数就变成了0,即当做机器零处理了。
(2)尾数计算
对阶完成后,两个浮点数尾数就如同定点数,计算过程同定点数计算。
(3)结果格式化
尾数计算后,可能会产生溢出,此时将尾数右移,同时指数加1,如果指数加1后发生了溢出,则表示两个浮点数的运算发生了溢出。
如果尾数计算没有溢出,则尾数不断左移,同时指数减1,直到尾数为格式化数。如果这个过程中,指数小于机器能表达的最小数,则将结果置“机器零”,这种情况称为下溢。
人们习惯于十进制,不习惯于二进制,而计算机只用二进制。有一个折中的方法,就是8421码。8421码使用4个二进制数来表示一位十进制数。比如,十进制的138的8421码表示为0001 0011 1000,所以这种表示方法也称为二进制编码的十进制编码,简称BCD码。这样比较容易阅读。在许多通信程序中,都采用BCD码来表示数据,这样在调试的过程中,比较容易读出其中的内容。
由于BCD码的特性,如果使用BCD码进行计算时,可能需要进行修正。如:
3+5 : 0011 + 0101 = 1000 正确。
而6+7 : 0110 + 0111 = 1101
这已经不在BCD码的范围内,此时需要进行修正。修正的方法是本位加6,并向高位进1。
还有一种编码是将BCD码加3作为数字表示法,称为余3码,在使用余3码进行计算时,从最高位产生的进位是真正的进位,对每4位的结果,如果是小于等于9的,则减3;如果大于9,则加3。
逻辑代数中参与操作的只有0和1,或者称为真或假。
考虑二进制变量A,“逻辑非”运算将A转换成N O T (A),它的作用如下:
如果A= 0,那么N O T (A) = 1;
如果A= 1,那么N O T (A) = 0。
“逻辑非”运算的表示是在变量上画一条直线,如A的逻辑非是:
。N O T函数也称为反相器,其运算称为取反。
“逻辑或”运算也称逻辑加运算,它的特点是两个或多个输入中只要有一个为1,则结果为1。它的符号有+、U、OR等
“逻辑与”运算也称为逻辑乘运算,它的特点是只有两个或者多个输入全部为1时,结果为1,否则结果为0。它的符号有×、∩、AND等。
在逻辑表达式中优先级从高到低是:“逻辑非”、“逻辑与”、“逻辑或”。
基本逻辑运算如表1-3所示。
表1-3 基本逻辑运算
与非门的表达式是:
,可以看出,与非门是当全部输入为1时,输出为0,否则为1。
或非门的表达式是:
,可以看出,或非门是当全部输入为0时,输出为1,否则为0。
异或门的表达式是:
,可以看出,异或门是当输入值不同时,输出为1,否则为0。
图1-1基本门电路
对一个二进制变量进行二次N O T运算就是一个基本恒等式,其形式:
这个结果是显而易见的。
O R函数在任何一个输入为1时,其输出为1,由此可导出几个有用的恒等式。
A+ 1 = 1将1与任何数相或,其输出为1
A+ 0 =A在或门的输入加0,不会使或门输出某一特定的值
A+A=A一个变量与其自身相或的结果是同一变量
A +
= 1称为互补性
与门的输入有一个为0时,其输出必为0。
交换律允许我们以任何顺序安排变量而不改变其结果,对于两个变量A和B,可以给出:
结合律定义了进行运算的顺序。在或运算和与运算中,运算的分组都不会影响其结果。
由于结合律适用于或运算和与运算,我们写逻辑表达式时通常省略括号。
与运算和或运算的分配由下列定律来决定:
这与一般代数所用的乘法和加法的分配律相同。
这个等式可以使用真值表证明,如表1-4所示。
表1-4 真值表
一个复杂的逻辑表达式需要多个逻辑电路来控制,而简单的逻辑表达式则能减少逻辑电路,而且能减少复杂性带来的可能性错误,所以有必要对复杂的逻辑表达式进行化简。
逻辑化简主要是利用上面提到的各种恒等式,将复杂的元素变成简单的表达式。
例1:化简
解:
分配律
例2:化简
解:
利用