第四章 机器数的运算方法
计算机中的真值和机器数
计算机中的真值和机器数真值(即:带有正负号的数值是真值,⽤0或1来表⽰正负号的数值是机器数,例如:-10011为真值,110011为机器数)以下X表⽰数据的真值。
1. 原码表⽰法最简单且直观的机器数表⽰法,其最⾼位为符号位(0为正,1为负),数值部分与真值的数值相同设X为纯⼩数,⼀位符号位,n个数值位,则X 0=<X<=1-2n-1[X]原={1-X=1+|X| -(1-2n-1)=<X<=0例如:x=-0.1001,那么先把它转化成机器数为:1.1001根据公式:[X]原=1-X=1-(-0.1001)=1+0.1001=1.1001=1+|-0.1001|[+0.8125]原=(0.1101000)2[-0.8125]原=1-(-0.8125)=(1.0000000)2+(0.1101000)2=(1.1101000)2设X为纯整数,⼀位符号位,n个数值位,则X 0=<X<=2n-1[X]原={2n-X=2n+|X| -(2n-1)=<X<=0例如:机器字长n=8[+35]原=(00100011)2[-35]原=27-(-35)=(10000000)2+(00100011)2=(10100011)22.补码表⽰法变形补码:即⽤两个⼆进制位来表⽰数字的符号位,其余与补码相同。
变形补码,⽤"00"表⽰正,⽤"11"表⽰负,也称为模4的补码。
⽤变形补码进⾏加减运算时,当运算结果的符号位出现"01"或者"10"时,则表⽰产⽣溢出。
变形补码的最⾼位(第⼀个符号位)总是表⽰正确的符号,⽐如"00"、 "01"分别表⽰正数、正溢出(上溢),"11"、"10"表⽰负数、负溢出(下溢)。
1、产⽣01的情况: 补码: 0 111+ 0 010----1 001两个正数相加出现了负数,明显有误,就是说此时产⽣了上溢出(注:补码运算时符号位也参与运算)变形补码: 00 111+ 00 010----01 001此时读数时,由于左边的符号位是0,所以表⽰正数,读成+9,⽽不像模⼆补码中变成了-72、产⽣10的情况: 补码: 1 001+ 1 010---- 10 011溢出⼀位后,结果变成了0 011,两个负数相加出现了正数,明显有误,就是说此时产⽣了(注:补码运算时符号位也参与运算)变形补码: 11 001+ 11 010----110 011溢出⼀位后,结果变成了10 011,此时读数时,由于左边的符号位是1,所以表⽰负数,读成-19,⽽不像模⼆补码中变成了+3(注:产⽣01和10时,读数时右边那⼀位符号也要算在数字⾥⾯)。
机器数
2、实数。实数的浮点数表示方法是:把一个实数的范围和精度分别用阶码和尾数来表示。在计算机中,为了 提高数据表示精度,必须表示小数点的位置,因此规定浮点数必须写成规范化的形式,即当尾数不为0时,其绝对 值大于或者等于0.5且小于1(注:因为是二进制数,要求尾数的第1位必须是1)。例如设机器字长为16位,尾数 为8位,阶码为6位,则二进制实数-1101.010的机内表示为。
2、二进制的位数受机器设备的限制。机器内部设备一次能表示的二进制位数叫机器的字长,一台机器的字长 是固定的。字长8位叫一个字节(Byte),机器字长一般都是字节的整数倍,如字长8位、16位、32位、64位。
分类
根据小数点位置固定与否,机器数又可以分为定点数和浮点数。通常,使用定点数表示整数,而用浮点数表 示实数。整理如下:
2、反码
如前所述,为了克服原码运算的缺点,采用机器数的反码和补码表示法。即对正数来说,其反码和原码的形 式相同;对负数来说,反码为其原码的数值部分各位变反。
的算术运算
1、反码的算术运算 反码运算要注意的问题: (1)反码运算时,其符号位与数值一起参加运算。 (2)反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。 (3)用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将 结果求反才是其真值。 [例1]已知X = + 1101, Y = + 0110,用反码计算Z = X-Y。 解: [X]反 =,[-Y]反 =,则[Z]反 =[X]反+[-Y]反 = ++1(循环进位)=,其真值为Z = +0111。 [例2]已知X = + 0110, Y = + 1101,用反码计算Z = X-Y。 解: [X]反 =,[-Y]反 =,则[Z]反 =[X]反+[-Y]反 = + =,其真值为Z = - 0111。 采用反码运算较好的解决了原码运算所遇到的困难或问题,但由于循环进位需要二次算术相加,延长了计算 时间,这同样给电路带来麻烦。
机器数的三种表示形式
机器数的三种表示形式计算机是一种由二进制代码控制的高科技设备,它可以对大量的数据进行快速的处理,被广泛应用于各个领域。
由于它的功能强大,不仅可以完成大量的计算工作,而且还可以替代人类完成一些复杂的任务。
这就使得人们在操作计算机时,需要一种方法来表示计算机数量。
机器数的三种表示形式分别是十进制、二进制和八进制。
其中,十进制是最常用的表示形式,十进制数采用十个数字0-9来表示,每一位数字代表一个十进制位,从右往左以10的次幂递增,最高位代表10的零次幂,即1。
例如,十进制的数字123表示的就是1×10的二次幂,加上2×10的一次幂,再加上3×10的零次幂,所以十进制的数字123就表示为100+20+3。
二进制是一种基于2的计数系统,它的基本单位是二进制位,由0和1组成,每一位数字代表一个二进制位,从右往左以2的次幂递增,最高位代表2的零次幂,即1。
例如,二进制的数字1011表示的就是1×2的三次幂,加上0×2的二次幂,再加上1×2的一次幂,最后再加上1×2的零次幂,所以二进制的数字1011就表示为8+0+2+1=11。
八进制是一种基于8的计数系统,它的基本单位是八进制位,由0到7组成,每一位数字代表一个八进制位,从右往左以8的次幂递增,最高位代表8的零次幂,即1。
例如,八进制的数字734表示的就是7×8的二次幂,加上3×8的一次幂,再加上4×8的零次幂,所以八进制的数字734就表示为448+24+4=476.以上就是机器数的三种表示形式:十进制、二进制和八进制。
它们每种都有自己的特点,十进制是最常用的表示形式,二进制和八进制则更高效。
由于这三种表示形式的不同,在使用计算机时,我们需要正确地使用它们,以达到计算机应用的最佳效果。
计算机机器数的三种表示方法
计算机机器数的三种表示方法计算机中的机器数可以通过不同的表示方法来表示。
下面将介绍计算机机器数的三种常见表示方法:原码、反码和补码。
1. 原码表示法:原码是机器数的最简单表示方法。
原码的表示方法是将一个数值的绝对值转换为二进制表示,然后在最高位上加上符号位,0代表正数,1代表负数。
例如,对于十进制数-5,它的原码表示为10000101,其中最高位1表示负数,其余位表示数值的绝对值。
原码表示法的优点是简单明了,符号位和数值部分可以直接进行运算,但是它也存在一些问题。
首先,原码的加法运算需要分别对符号位和数值部分进行处理,不够高效。
其次,原码中存在两个零:+0和-0,导致运算结果不唯一。
2. 反码表示法:为了解决原码运算不方便的问题,人们引入了反码表示法。
在反码表示法中,正数的反码与原码相同,负数的反码是对原码符号位之后的数值部分按位取反。
例如,对于十进制数-5,它的反码表示为11111010,其中最高位1表示负数,其余位是对原码数值部分按位取反得到的。
反码表示法解决了原码运算的问题,可以直接对符号位和数值部分进行运算,但是它仍然存在一个问题:+0和-0的表示仍然不唯一。
3. 补码表示法:为了解决反码表示法的+0和-0不唯一的问题,人们引入了补码表示法。
在补码表示法中,正数的补码与原码相同,负数的补码是对原码符号位之后的数值部分按位取反,然后再加1。
例如,对于十进制数-5,它的补码表示为11111011,其中最高位1表示负数,其余位是对原码数值部分按位取反得到的,然后再加1。
补码表示法是计算机中最常用的表示方法。
它解决了原码和反码表示法中+0和-0不唯一的问题,同时还能够简化负数的加法运算。
在补码表示法中,正数和负数的加法运算可以统一处理,只需要进行简单的二进制加法即可。
总结:计算机中的机器数可以通过不同的表示方法来表示,其中包括原码、反码和补码。
原码是最简单的表示方法,直接将数值的绝对值转换为二进制表示,并在最高位上加上符号位。
四章数据的机器运算
单级先行进位
构成16 位加法 器很容 易实现
以16位加法器为例,将其分为4组,每组4位。
在组内,按照并行进位函数直接产生C1~C4,这 些进位可同时得到。实现这种进位逻辑的电路称 为4位先行进位电路(CLA),如74181ALU。
利用这种4位一组的CLA电路和4位全加器可以构 成4位CLA加法器。注意,4位CLA加法器包含了 两部分逻辑:4位全加器和4位一组的先行进位链, 这个组内的进位为一级进位。
可以看出,这4组进位结构与前述4位先行进位逻辑完全相同, 组间进位信号只与最低进位C0有关,所以能同时产生。
15
多级先行进位(续二)
组内进位信号能同时产生、组间进位信号也能同时产 生,由此可以构成多级并行进位逻辑。16位2级先行 进位加法器如下图所示。
16
多级先行进位(续三)
问题是这4个组间进位信号如何用硬件来产生呢? 对于多级先行进位的实现可以按如下思路来理解:
∴ 判别条件为:溢出= XsYsSs+XsYsSs 其中,Xs、Ys为参加运算两数的符号, Ss为结果符号位。
30
补码加减溢出的判别方法(续)
②采用进位位判别
两符号个位正不数产相生加进,位当(最C高s=有0效)位时产,生发进生位上溢(;C1=1)而 两而符个号负位数产相生加进,位当,最发高生有下效溢位。不产生进位(C1=0)
四章数据的机器运算
本章主要内容
主要内容
算术、逻辑运算的实现 定点加、减运算 数的移位和舍入操作 定点乘、除运算 规格化浮点运算
2
全加器的逻辑方程和电路
根据真值表得:
Si=Ai⊕Bi⊕Ci-1 Ci=AiBi+(Ai⊕Bi)Ci-1
Si : 本位和 Ci : 向高位的进位 一个全加器只完成一位加法
《计算机组成原理第4章数值的机器运算
3.移位功能的实现 3.移位功能的实现 在计算机中, 在计算机中 , 通常移位操作由移位寄存 器来实现, 器来实现,但也有一些计算机不设置专门的移 位寄存器,而在加法器的输出端加一个移位器。 位寄存器,而在加法器的输出端加一个移位器。 移位器是由与门和或门组成的逻辑电路( 移位器是由与门和或门组成的逻辑电路(实际 是一个多路选择器) 可以实现直传( 是一个多路选择器 ) , 可以实现直传 ( 不移 左斜一位送(左移一位) 位)、左斜一位送(左移一位)和右斜一位送 右移一位)的功能。 (右移一位)的功能。
10
3.补码加减运算规则
⑴参加运算的两个操作数均用补码表示; 参加运算的两个操作数均用补码表示; 符号位作为数的一部分参加运算; ⑵符号位作为数的一部分参加运算; 若做加法, 则两数直接相加, 若做减法, ⑶ 若做加法 , 则两数直接相加 , 若做减法 , 则 将被减数与减数的机器负数相加; 将被减数与减数的机器负数相加; ⑷运算结果仍用补码表示
第4章数值的机器运算
运算器是计算机进行算术运算和逻辑运 算的主要部件, 算的主要部件,运算器的逻辑结构取决于机器 的指令系统、数据表示方法和运算方法等。 的指令系统、数据表示方法和运算方法等。本 章主要讨论数值数据在计算机中实现算术运算 和逻辑运算的方法, 和逻辑运算的方法,以及运算部件的基本结构 和工作原理。 和工作原理。
8
4.2.2 补码加减运算
1.补码加法 补码加法 两个补码表示的数相加,符号位参加运算, 两个补码表示的数相加,符号位参加运算,且两 数和的补码等于两数补码之和, 数和的补码等于两数补码之和,即: [X+Y]补=[X]补+[Y]补
2.补码减法 补码减法
根据补码加法公式可推出: 根据补码加法公式可推出: [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补 从补码减法公式可以看出,只要求得[-Y] 补 , 就 从补码减法公式可以看出 , 只要求得 可以变减法为加法。 不管Y的真值为正或为负 的真值为正或为负, 可以变减法为加法 。 不管 的真值为正或为负 , 已知 [Y]补求[-Y]补的方法是:将[Y]补连同符号位一起求反, 的方法是: 连同符号位一起求反, 末尾加“ 被称为[Y] 的机器负数, 末尾加 “ 1” 。 [-Y]补 被称为 补 的机器负数 , 由 [Y] 补 的过程称为对[Y] 变补(求补) 求[-Y]补的过程称为对 补变补(求补),表示为 [-Y]补=[[Y]补]变补 9
机器数的表示方法
机器数的表示方法机器数是计算机中用来表示数字的一种编码方式,它是计算机能直接识别和处理的数值形式。
机器数的表示方法有多种,常见的有原码、反码和补码等。
原码是机器数最简单的表示方法,即用最高位表示符号位,其余位表示数值。
正数的原码与其真值相同,负数的原码则将符号位设为1,其余位表示该负数的绝对值。
然而,原码的表示方法存在一个问题,即加法和减法运算不够方便。
为了解决这个问题,人们提出了反码的表示方法。
反码的表示方法是在原码的基础上,对负数的除符号位外的每一位取反,即0变为1,1变为0。
这样,负数的反码表示了它的绝对值的补码。
虽然反码解决了加法和减法运算的问题,但是在计算机中,仍然存在一个问题,即0有两种表示形式,+0和-0。
为了解决这个问题,人们提出了补码的表示方法。
补码的表示方法是在反码的基础上,对负数的反码加1。
这样,负数的补码表示了它的绝对值的补码加1。
补码的表示方法不仅解决了0的表示问题,而且还使得计算机能够进行更复杂的运算,如乘法和除法。
此外,补码的表示方法还具有一个优点,即负数的补码与其真值相对应,方便计算机进行数值的加减运算。
除了原码、反码和补码,还有其他的机器数表示方法,如移码和浮点数等。
移码是一种将机器数的小数点向左或向右移动一定位数的表示方法,可以用来表示大数或小数。
浮点数是一种用科学计数法表示的机器数,由一个尾数和一个指数组成,可以表示非常大或非常小的数值。
总的来说,机器数的表示方法有多种,每种方法都有其特点和适用范围。
在计算机中,常用的表示方法是补码,它不仅能表示正数和负数,还能进行复杂的运算。
其他的表示方法如移码和浮点数则适用于特定的场景,能够表示更大范围的数值。
无论采用哪种表示方法,都需要根据具体的应用需求来选择,以确保计算机能够正确处理和存储数字。
机器数与它的三种表示法
机器数与它的三种表示法
钟乐海
1995-09-29
机器数计算机中的表示方法有三种,即原码、反码和补码,最常用的是原码和补码两种,原码表示法比较直观,补码运算则比较简单。下面分别从其定义出发来理解这三种表示法及其关系。
原码表示法是一种直观的机器数表示法,用最高位表示符号,符号位为0表示该数为正,符号位为1表示该数为负,有效数值部分用二进制绝对值表示。如真值为+0.1010和-1100其原友码为0.1010和11100。用原码作乘除法时,可取其绝对值(尾数)直接运算,再按同号相乘除为正,异号相乘除结果为负的原则单独处理符号,但对常用的加减法运算,却极不方便,由此引进补码的概念。
对补码的求值,一般是通过原码转化而来。对正数,[x]原=[x]补,对负数,是符号位保持不变,尾数各位变反,然后末位加1,即“变反加1”。如:[x]原=1.1010,则[x]补=1.0110。
在补码和原码的转换中,又产生一种机器数的表示法,这就是仅对尾数逐位取反而不在末位加1,这种数的表示法称反码表示法,它可以达到化减为加的目的。正数反码与原码、补码相同,负数反码的符号位为1,其尾数可由其绝对质逐位反而得,符号位也参与计算。具体表示为:x=0.101,x反=0.101;x=-0.101,x反=1.010。
机器数的表示与运算
反码
对一个机器数X: 若X>0
[X]反=[X]原
若X<0
[X]反= 对应原码的符号位不变,数值部分按位求反
7
[例]
X= -52 = -0110100 [X]原=1 0110100 [X]反=1 10010 Nhomakorabea18
0的反码:
[+0]反 =00000000 [-0]反 =11111111 即:数0的反码也不是唯一的。
9
补码
定义: 若X>0
[X]补= [X]反= [X]原
若X<0
[X]补= [X]反+1
10
[例]
X=-52= -0110100
[X]原=10110100 [X]反=11001011 [X]补= [X]反+1=11001100
11
0的补码:
[+0]补= [+0]原=00000000 [-0]补= [-0]反+1=11111111+1
机器数的表示与运算
1. 机器数
计算机中的数称为机器数 构成:
符号位 + 真值
“0” “1”
表示正 表示负
2
[例]
+52 = +0110100 = 0 0110100
符号位 真值
-52 = -0110100 = 1 0110100
符号位 真值
3
2. 机器数的表示
机器数的表示方法:
原码 反码 补码
4
原码
最高位为符号位,其余为真值部分。
“0”表示正 “1”表示负
优点:
真值和其原码表示之间的对应关系简单,容易理解;
缺点:
计算机中用原码进行加减运算比较困难 0的表示不唯一。
第四章 机器数的运算方法
两数变形补码之和等于两数和的变形补码,要求: • 两个符号位都看做数码一样参加运算; • 两数进行以4为模的加法,即最高符号位上产生的进位要丢掉
计算机组成原理
双符号位的含义如下: Sf1Sf2 = 00 01 10 11 结果为正数,无溢出 结果正溢 结果负溢 结果为负数,无溢出
即:结果的两个符号位的代码不一致时,表示溢出; 两个符号位的代码一致时,表示没有溢出。 不管溢出与否,最高符号位永远表示结果的正确符号。 溢出逻辑表达式为: V=Sf1⊕Sf2
P49 例4.1
计算机组成原理
2.补码加法运算
补码加法的公式:
[ x ]补+[ y ]补=[ x+y ]补 (mod 2n)
特点:不需要事先判断符号,符号位与数值位一起参加运算。 符号位相加后若有进位,则舍去该进位数字。 在模2n意义下,任意两数的补码之和等于该两数之和的补码。 这是补码加法的理论基础。同理在模2的意义下,此结论也适 用于定点小数。
计算机组成原理
溢出及与检测方法
1. 概念
在定点小数机器中,数的表示范围为|x|<1。在运算过程 中如出现大于1的现象,称为 “溢出”。
下溢
上溢
机器定点小数表示
同理:定点整数也有溢出现象。 用不同的编码方法,就有不同的表示范围。如补码
计算机组成原理
例: x=+0.1011, y=+0.1001, 求x+y。 解: [x]补=0.1011 [y]补=0.1001 [x]补 0. 1 0 1 1 + [y]补 0. 1 0 0 1 [x+y]补 1. 0 1 0 0 两个正数相加的结果成为负数,这显然是错误的。 例: x= -0.1101, y= -0.1011, 求x+y。 解: [x]补=1.0011 [y]补=1.0101 [x]补 1. 0 0 1 1 + [y]补 1. 0 1 0 1 [x+y]补 0. 1 0 0 0 两个负数相加的结果成为正数,这同样是错误的。
计算机组成原理第4章
数据开关 (11000001)
C1H
打开三 态门 SW_G=0
-1 0 +1 定点小数
器允许的表示范围(溢出)。
补码 纯小数:0≤X<1
总线1 总线2
通用 寄存器
ALU
特殊 寄存器
总线 旁路器
总线3
16
4.9 运算器的基本组成与实例
4.9.2 ALU举例 1. ALU电路
ALU即算术逻辑单元,它是既能完成算术运 算又能完成逻辑运算的部件。前面已经讨论过, 无论是加、减、乘、除运算,最终都能归结为加 法运算。因此,ALU的核心首先应当是一个并行 加法器,同时也能执行像“与”、“或”、 “非”、“异或”这样的逻辑运算。由于ALU能 完成多种功能,所以ALU又称多功能函数发生器。
C1=G1+P1C0 C2=G2+P2C1=G2+P2G1+P2P1C0
C3=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
6
C1=G1+P1C0 C2=G2+P2C1 C3=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
…
…
计算机组成原理课件第四章计算机中的算术运算
例:[X]补=0.1101,[Y]补=0.1011,求X*Y=?
解: 部分积
乘数
说明
00.0000 + 11.0011
0. 1 0 1 1 0
YYnnY+1n=+10=10, 加[-X]补
11.0011 → 11.1001 + 00.0000
1. 0 1 0 1 1
右移一位
YnY n+1=11, 加0
当计数器i=n+1时,封锁LDR1和L
DR0控制信号,使最后一步不移位。
原码两位乘法
◦ 两位乘法即从乘数的最低位开始每次取两位乘数与被乘数 相乘得到一次部分积。
◦ Yi-1yi=00,相当于0×x,部分积加0,右移两位 ◦ Yi-1yi=01,相当于1×x,部分积加|x|,右移两位 ◦ Yi-1yi=10,相当于2×x,部分积加2|x|,右移两位 ◦ Yi-1yi=11,相当于3×x,部分积加3|x|,右移两位
采用双符号位的判断方法
每个操作数的补码符号用两个二进制数表示,称为 变形补码,用“00”表示正数,“11”表示负数,左边第 一位叫第一符号位,右边第一位称为第二符号位,两个 符号位同时参加运算,如果运算结果两符号位相同,则 没有溢出发生。如果运算结果两符号位不同,则表明产 生了溢出。“10”表示负溢出,说明运算结果为负数, “01”表示正溢出,说明运算结果为正数。
Zf=Xf+Yf=0+0=0 [Z]原=0 . 10001111 X*Y=0.10001111
原码一位乘法的逻辑电路图
R0存放部分积,R2存放被乘数,R1存放 乘数。
一、 R0清零,R2存放被乘数,R1存放乘数。 乘法开始时,“启动”信号时控制CX置1, 于是开启时序脉冲T,
机械计算公式范文
机械计算公式范文机械计算是指利用机械设备进行数值计算的方式。
在过去,当计算机尚未普及时,人们常常使用机械计算器或计算尺等工具进行计算。
机械计算通常采用一定的公式或算法来完成计算任务。
接下来,我将介绍一些常见的机械计算公式。
1.加法和减法:机械计算器可以通过滑动刻度、计算齿轮和进位环等机械部件来实现加法和减法运算。
对于加法,可以简单地将两个数的刻度相加。
对于减法,可以将两个数的刻度相减。
这是最基本的机械计算公式之一2.乘法和除法:乘法和除法运算是机械计算中比较复杂的部分。
机械计算器通常使用乘法和除法表格来实现这些运算。
乘法表格由一系列的进位环和乘法位构成。
通过将两个数的对应数字所在的进位环拧到一起,将相应的乘法位相加,从而完成乘法运算。
除法表格使用类似的原理,通过将两个数的对应数字所在的进位环拧到一起,将相应的除法位去除,完成除法运算。
3.开方和乘方:机械计算器可以使用齿轮和刻度来进行开方和乘方运算。
开方操作通常使用开方刻度,将要开方的数对齐到刻度上,读取对应的结果。
乘方操作则需要多次进行乘法运算,通过拨动齿轮和刻度来完成。
4.三角函数和反三角函数:机械计算器可以使用圆盘和刻度来进行三角函数和反三角函数的计算。
圆盘上有标有正弦、余弦和正切的刻度,通过将圆盘的角度对齐到刻度上,可以读取对应的三角函数值。
反三角函数的计算则需要将刻度对齐到对应的三角函数值上,读取对应的角度。
5.积分和微分:机械计算器中也有专门用于积分和微分运算的部件。
积分通常是利用机械计算器的刻度和滑动计算杆来实现,通过滑动计算杆来测量曲线下的面积。
微分则需要更复杂的装置,通常使用机械芯轴和微分齿轮来进行。
以上只是一些常见的机械计算公式,实际上机械计算涉及的公式还有很多。
机械计算器和计算尺等工具在现代计算机普及之前起到了重要的作用,为人们进行精确的数值计算提供了便利。
虽然现代计算机已经完全取代了机械计算器,但机械计算的思想和原理仍然对我们有着重要的启示和意义。
第4章数值的机器运算(2015)详述
计算机组成原理
11 7 -14
-11 -7 14
40
4.2 定点加减运算
计算机组成原理
(3)采用变形补码(双符号位补码)
➢ 左边的符号位Ss1叫真符,代表该数真正的符号, 两个符号位都作为数的一部分参加运算
Ss1Ss2=00 结果为正数,无溢出 Ss1Ss2=01 结果正溢 Ss1Ss2=10 结果负溢 Ss1Ss2=11 结果为负数,无溢出
计算机组成原理
3
第4章
计算机组成原理
➢ 了解串行加法器与并行加法器的区别
➢ 理解进位产生和进位传递的概念
➢ 掌握并行加法器不同进位方式的特点与区别
4
第4章
计算机组成原理
➢ 运算器是计算机进行算术运算和逻辑运算的主要 部件
➢ 运算器的逻辑结构取决于机器的指令系统、数据 表示方法和运算方法等
➢ 本章讨论数值数据在计算机中实现算术运算和逻 辑运算的方法,以及运算部件的基本结构和工作 原理
若真值为纯整数,补码形式为 XsX1X2…Xn,其中Xs表示符号位
[X]补=
X
0≤X<2n
(mod 2n+1)
2n+1+X=2n+1-|X| -2n ≤ X<0
12
4.2 定点加减运算
计算机组成原理
2. X>0, Y<0
由补码定义:[X]补=X, [Y]补=M+Y (mod M)
[X]补+[Y]补=X+M+Y
38
4.2 定点加减运算
0,0 0 1 1 + 0,0111111
第4章 机器数的运算方法及运算器.
第4章机器数的运算方法及运算器4.1 机器数的加减运算及其实现4.1.1 原码加法1.符号相同的两个原码相加:符号相同的两个原码相加,只要两个数的数值相加即可,其符号不变。
例4.1 设X=+10001,Y=+01011,求Z=X+Y解:即,Z=+11100。
例4.2 设X=-10001,Y=-01011,求Z=X+Y2.符号相异的两个原码相加:先比较两数的绝对值大小,用绝对值大的数减去绝对值小的数,结果的符号是绝对值大的数的符号。
【例4.3】设X=+10101,Y=-01010,求Z=X+Y解:先比较X与Y的绝对值,本题∣X∣>|Y|,所以做减法|X∣-|Y|,结果是Z=+01011例4.2 设X=+01010,Y=-10111,求Z=X+Y解:先比较X与Y的绝对值,本题∣Y∣>|X| ,所以做减法|Y∣-|X|,结果是Z=-01101用原码进行符号不同的两个数相加时有以下三步运算:①比较两个数的绝对值的大小;②绝对值大的数的绝对值减去绝对值小的数的绝对值;③结果赋以绝对值大的那个数的符号。
4.1.2 补码加法补码运算特点:①补码运算时,不用判断符号位,符号位与数值一块参与运算;②两数相加之后,进位的最高位超出字长部分自动丢失。
1.定点补码运算性质性质1 两数之和的补码等于两数补码之和。
[X+Y]补=[X]补+[Y]补例4.5 设X=+11010,Y=-10101,用补码的加法求Z=X+Y解:加数和被加数的数值位都是5位,在数值位之前加1位符号位。
这样,[X]补=011010,[Y]补=101011[X+Y]补= [X]补+[Y]补= 011010+101011=000101所以,X+Y=+00101。
注意:在运算中,数值位和符号位有进位,本例采用单符号位,以2为模,进位的1就丢掉了。
例4.6 设X=+10101,Y=-11010,用补码加法求Z=X+Y解:[X]补= 010101,[Y]补=100110[X+Y]补=[X]补+[Y]补= 010101+100110=111011所以,X+Y=-00101。
机器数的乘法运算
机器数的乘法运算机器数的乘法运算是计算机中非常基础和重要的运算之一。
在计算机中,所有的数字都是以二进制形式进行表示和存储的,因此机器数的乘法运算也是以二进制为基础进行的。
在机器数的乘法运算中,首先需要将乘法运算转换为加法运算。
我们知道,两个数相乘可以看作是其中一个数不断地累加另一个数的过程。
例如,4乘以3可以看作是4累加3次,即4+4+4=12。
因此,在机器数的乘法运算中,需要将乘法转换为多次的加法运算。
具体地,机器数的乘法运算可以通过以下步骤来进行:1. 将两个数的机器数表示形式对齐,即保证两个数的二进制表示的位数相同。
2. 从右向左,逐位进行乘法运算。
每一位的乘法运算可以分为以下几步:a. 将两个数相应位置的二进制位进行乘法运算,得到一个中间结果。
b. 将中间结果与前面已经计算出的结果相加,得到新的结果。
c. 将新的结果作为下一位的运算结果,继续向左进行运算。
3. 重复上述步骤,直到所有位的乘法运算都完成。
4. 最后得到的结果即为两个数的乘积。
需要注意的是,在机器数的乘法运算中,可能会出现溢出的情况。
溢出是指计算结果超过了机器数的表示范围,导致结果不准确。
因此,在进行乘法运算时,需要考虑溢出的情况,并进行适当的处理。
机器数的乘法运算也可以采用其他的算法来进行,例如快速乘法算法和位操作算法等。
这些算法可以进一步提高乘法运算的效率,减少运算时间和资源的消耗。
机器数的乘法运算是计算机中非常基础和重要的运算之一。
通过将乘法转换为多次的加法运算,可以实现机器数的乘法运算。
在进行乘法运算时,需要注意溢出的情况,并采取适当的处理方法。
此外,还可以采用其他算法来提高乘法运算的效率。
机器数的乘法运算在计算机科学中有着广泛的应用,在各种计算和数据处理任务中起着重要的作用。
【王的技法0001】机器数、真值、原码、反码、补码总结
【王的技法0001】机器数、真值、原码、反码、补码总结⼀、概念清单1. 机器数2. 真值3. 原码4. 反码5. 补码⼆、概念详解1. 机器数1. 机器数是⼀个数在计算机中的⼆进制表⽰形式。
2. 机器数带符号,最⾼位存放,正数为0,负数为1。
⼗进制数+3,计算机字长为8位的话,转换⼆进制为00000011⼗进制数-3,计算机字长为8位的话,转换⼆进制为10000011上述这两个⼆进制就是机器数。
2. 真值1. 由于符号位的存在,机器数不等于真值。
2. 带符号的机器数,真正的数值。
-3是真值,它的机器数是10000011(其形式值为131(⼗进制))3. 原码1. 原码是符号位加上真值的绝对值,即第⼀位为符号位,其余位表⽰值。
⼗进制数+1原码为 00000001⼗进制数-1原码为 100000012. 因为第⼀位是符号位,所以8位⼆进制的取值范围为:[11111111,01111111]即[-127,127]3. 原码是⼈脑最容易理解和计算的编码⽅式。
4. ⽆符号数⽤原码。
4. 反码1. 正数的反码是其本⾝。
2. 负数的反码是其原码基础上,符号位不变,其余各位取反。
[+1] = [00000001]【原】 = [00000001]【反】[-1] = [10000001]【原】 = [11111110]【反】3. 反码不容易被⼈脑直接看出真值,通常需要转换成原码5. 补码1. 正数的补码是其本⾝。
2. 负数的补码是其原码的基础上,符号位不变,其余各位取反,最后+1。
[+1] = [00000001]【原】 = [00000001]【反】 = [00000001]【补】[-1] = [10000001]【原】 = [11111110]【反】 = [11111111]【补】3. 补码不容易被⼈脑直接看出真值,通常需要转换成原码4. 计算机中,有符号数采⽤补码三、有符号数采⽤补码的意义与⽅法1. 意义:为了让符号位参与运算,以简化基础电路设计。
机器数总结
机器数总结什么是机器数在计算机系统中,机器数是计算机对数字和字符的内部表示方式。
机器数通常以二进制形式存在,并且被存储在计算机的内存中。
机器数的长度可以是固定的,也可以是可变的,具体取决于计算机的体系结构。
机器数的表示方法无符号整数无符号整数是指没有正负号的整数。
在机器数中,无符号整数通常使用二进制表示,从0开始依次增加。
例如,一个8位无符号整数的范围是0到255,即11111111,对应十进制的255。
补码表示整数补码是一种用来表示有符号整数的方法。
在补码表示中,最高位表示符号位,0表示正数,1表示负数。
正整数的补码和原码相同。
负整数的补码是将其绝对值的二进制表示取反,然后加1。
例如,对于一个8位的补码表示整数,范围是-128到127。
浮点数浮点数是一种表示实数的方法,包含一个小数部分和一个指数部分。
计算机中的浮点数通常以科学计数法的形式表示,包括三个部分:符号位、指数位和尾数位。
浮点数在计算机中的表示方式有多种,例如IEEE 754标准就是一种常见的浮点数表示方式。
不同进制的机器数表示除了二进制之外,计算机还可以使用其他进制表示机器数,包括八进制和十六进制。
八进制表示八进制使用8个不同的数字表示数值,分别是0、1、2、3、4、5、6、7。
八进制的每一位相当于三个二进制位,因此可以用较短的位数表示相同的数值。
十六进制表示十六进制使用16个不同的数字表示数值,分别是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
十六进制的每一位相当于四个二进制位。
结论机器数是计算机对数字和字符的内部表示方式,通常以二进制形式存在。
机器数的表示方法包括无符号整数、补码表示整数和浮点数。
不同进制的机器数表示包括二进制、八进制和十六进制。
了解和理解机器数的表示方法对于理解计算机系统的底层工作原理非常重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
溢出及与检测方法
1. 概念
在定点小数机器中,数的表示范围为|x|<1。在运算过程 中如出现大于1的现象,称为 “溢出”。
下溢
上溢
机器定点小数表示
同理:定点整数也有溢出现象。 用不同的编码方法,就有不同的表示范围。如补码
计算机组成原理
例: x=+0.1011, y=+0.1001, 求x+y。 解: [x]补=0.1011 [y]补=0.1001 [x]补 0. 1 0 1 1 + [y]补 0. 1 0 0 1 [x+y]补 1. 0 1 0 0 两个正数相加的结果成为负数,这显然是错误的。 例: x= -0.1101, y= -0.1011, 求x+y。 解: [x]补=1.0011 [y]补=1.0101 [x]补 1. 0 0 1 1 + [y]补 1. 0 1 0 1 [x+y]补 0. 1 0 0 0 两个负数相加的结果成为正数,这同样是错误的。
解: [x]补=0.1101 [ y]补=0.0110, [-y]补=1.1010 [x]补 +[-y]补 [x-y]补
计算机组成原理
0.1101 1.1010 10.0111
∴ x-y=+0.0111
例:
x= -0.1101,y= -0.0110,求x-y=? [-y]补=0.0110 1.0 0 1 1 0.0 1 1 0 1.1 0 0 1
1 1 1
计算机组成原理
为了适合两个操作数相加的加法器,将 xy 改写成下面形式:
xy = x(0.1011) = 0.1x + 0.00 x + 0.001 x + 0.0001 x
= 0.1 { x+0.1[ 0 + 0.1 (x+0.1 x) ] }
= 2-1 { x+ 2-1 [0 + 2-1(x+2-1 ( x+0)) ] }
例 x= -0.1100, y= -0.1000, 求x+y。 解: [x]补=11.0100 [y]补=11.1000 [x]补 1 1.0 1 0 0 + [y]补 1 1.1 0 0 0 1 0. 1 1 0 0 符号位出现“10”,表示已溢出,负溢出。即结果小于-1
计算机组成原理
(3) 利用进位值的判别法 [x]补 0 0. 1 1 0 0 +[y]补 0 0. 1 0 0 0 0 1. 0 1 0 0 [x]补 1 1.0 1 0 0 +[y]补 1 1.1 0 0 0 11 0.1 1 0 0
例:x=0.1101 , y=0.1011 , 求 x· 。 y
部分积 0 0.0 0 0 0 0 0.1 1 0 1 0 0.1 1 0 1 0 0.0 1 1 0 0 0.1 1 0 1 0 1.0 0 1 1 0 0.1 0 0 1 0 0.0 0 0 0 0 0.1 0 0 1 0 0.0 1 0 0 0 0.1 1 0 1 0 1.0 0 0 1 0 0.1 0 0 0 yf 乘数 1011 说明 z0=0 y4=1, +x 右移,得z1 y3=1, +x 右移,得z2 y2=0, +0 右移,得z3 y1=1, +x 右移,得z4=xy
解: [x]补=1.0011 [y]补=1.1010 [x]补 + [-y]补 [x-y]补
∴x-y = -0.0111
例: x=+0.1011, y=+0.1001, 求x+y。 解: [x]补=0.1011 [y]补=0.1001 [x]补 0. 1 0 1 1 + [y]补 0. 1 0 0 1 [x+y]补 1. 0 1 0 0 两个正数相加的结果成为负数,发生溢出。
计算机组成原理
例: x=0.1001, y=0.0101, 求 x+y。 解: [x]补=0.1001, [y]补=0.0101 [x]补 + [y]补 [x+y ]补 0.1001 0.0101 0.1110
所以
x+y=+0.1110
例: x=+0.1011, y=-0.0101, 求 x+y。 解: [x]补=0.1011, [y]补=1.1011
计算机组成原理
形成递推公式
令zi表示第i次部分积,则根据从内到外的原则有: z0 = 0, y=0.y1y2......yn -1(y x+z ) z1 = 2 n 0 z2 = 2-1(yn-1x+z1) ┊ zi = 2-1(yn-i+1x+zi-1) ┊ zn = xy = 2-1(y1x+ zn-1)
即x+y= -1.01
没有溢出
计算机组成原理
第二节 定点乘法运算
一、原码一位乘法
1. 乘法的手工算法 设n位被乘数和乘数用定点小数表示(定点整数同理)
被乘数
乘数则乘积
[x]原=xf . xn-1… x1x0
[y]原=yf . yn-1… y1y0
[z]原=(xf⊕yf)+(0. xn-1… x1x0)(0. yn-1… y1y0)
两数变形补码之和等于两数和的变形补码,要求: • 两个符号位都看做数码一样参加运算; • 两数进行以4为模的加法,即最高符号位上产生的进位要丢掉
计算机组成原理
双符号位的含义如下: Sf1Sf2 = 00 01 10 11 结果为正数,无溢出 结果正溢 结果负溢 结果为负数,无溢出
即:结果的两个符号位的代码不一致时,表示溢出; 两个符号位的代码一致时,表示没有溢出。 不管溢出与否,最高符号位永远表示结果的正确符号。 溢出逻辑表达式为: V=Sf1⊕Sf2
式中,xf为被乘数符号,
yf为乘数符号。
计算机组成原理
(1)乘积符号的运算规则:同号相乘为正,异号相乘为负。 用异或可实现。 (2)乘积数值部分:为两数的绝对值之积。 (3) 手工运算过程: 设x=-0.1101,y=0.1011 0. 1 1 0. 1 0 1 1 1 1 0 0 0 0 0 + 1 1 0 1 0. 1 0 0 0 1 1
特点:每次只需要相加两个数,然后右移一位。且相加的两个 数(部分积和位积)都只有n位,因而不需要2n位的全加器。
计算机组成原理
3.原码一位乘法 流程图
n
开始 i=0, zi = 0 yn= 1 ?
y zi + x
zi + 0
zi , y右移一位,i = i+1 n i=n? y 结束
计算机组成原理
计算机组成原理
采用变形补码后数的表示(纯小数) • 任何小于1的正数: 两个符号位都是“0”,即 00.x1x2...xn;
• 任何大于-1的负数:两个符号位都是“1”,即 11.x1x2…xn 模4补码加法公式: 模4补码加法公式: [x]补+[ y]补=[x+y]补 (mod 4) [x]补+[ -y]补=[x-y]补 (mod 4)
[x]补 +[y]补 [x+y]补
0.1011 1.1011 10.0110 所以 x+y=0.0110
计算机组成原理
补码减法
补码减法运算的公式:
[ x-y ]补=[ x ]补-[ y ]补=[ x ]补+[-y ]补 由上式可知,减法运算要设法化为加法完成
例: x=+0.1101, y=+0.0110, 求 x-y。
P49 例4.1
计算机组成原理
2.补码加法运算
补码加法的公式:
[ x ]补+[ y ]补=[ x+y ]补 (mod 2n)
特点:不需要事先判断符号,符号位与数值位一起参加运算。 符号位相加后若有进位,则舍去该进位数字。 在模2n意义下,任意两数的补码之和等于该两数之和的补码。 这是补码加法的理论基础。同理在模2的意义下,此结论也适 用于定点小数。
根据此式,按式中括号可表达的层次,从内向外逐次 进行移位累加。每算完一层括号,就得到一个新部分积。
计算机组成原理
一般而言,设被乘数x,乘数y都是小于1的n位定点正数:
x=0.x1x2......xn <1 y=0.y1y2......yn <1
其乘积为:
x· y=x(0.y1y2......yn ) =x(y12-1 +y22-2 +…+ yn2-n ) = 2-1(y1x+2-1(y2x+2-1(…+2-1(yn-1x+2-1(ynx+0))…)))
判断电路
计算机组成原理
(2) 双符号位法 一个符号位只能表示正、负两种情况,当产生溢出时,符号 位的含义就会发生混乱。如果将符号位扩充为两位(Sf1、Sf2), 其所能表示的信息量将随之扩大,既能判别是否溢出,又能指 出结果的符号。 双符号位法也称为“变形补码”或“模4补码” 。 变形补码定义: [x]补= x 4+x 0 x<2 -2 x<0 (mod 4)
2.溢出的检测方法
[x]补 + [y]补 0. 1 0 1 1 0. 1 0 0 1
[x]补
+ [y]补
1. 0 0 1 1
1. 0 1 0 1
[x+y]补 1. 0 1 0 0
[x+y]补 0. 1 0 0 0
(1) 单符号位法
溢出逻辑表达式为:
V=Xf YfZf + Xf Yf Zf
Xf和Yf表示被加数和加数补码的符号位,Zf为 补码和的符号位, V作为溢出标志,为1则溢出
判断电路
V=Sf1⊕Sf2
V=C1⊕Co
计算机组成原理
3.溢出时的运算
运算中,如果结果出现溢出,则需要特殊处理才能得出正确结果。
选取一个合理的比较因子H=2i,对每个加数除以H, 然后再相加,其结果再乘以H,即得正确结果。