计算机组成原理双符号位例题,计算机组成原理 定点运算-移位、加、减、乘、除(详细解析-看完就会)...

定点运算

一、移位运算

1.移位运算的意义:

计算机中的移位是数据相对于小数点移位(左移或右移),数据移动,小数点位置不发生变化

2.在平常,数值移位

左移:绝对值扩大

右移:绝对值缩小

3.在计算机中二进制移位

左移:数值绝对值变为原来2倍

右移:数值绝对值变为原来1/2倍

4.算术移位规则

有符号位的移位

左移1位:机器数对应真值的绝对值变为原来2倍

右移1位:机器数对应真值的绝对值变为原来1/2倍

5.移位过程中,如何填补空位

负数:数值部分和真值相同

ceed548c6c95abb28ad2e83b8c3d9161.png

6.逻辑移位与算术移位

无符号数的移位

逻辑左移 低位添0,高位移丢

逻辑右移 高位添0,低位移丢

例如:

01010011

逻辑左移 所有位都参加移位操作 高位0移丢,最低位添0 :10100110

算术左移 第一个0表示符号位,这个数为正数,符号位不参与移位,移位的是后面的数据00100110

例如:

10110010

逻辑右移 所有位都参加移位操作 空出的最高位补0,最低位丢弃01011001

算术右移 最高位不参与移位,符号位,表示负数,右移左侧空出最高位添1,右侧0丢弃11011001

二、加法和减法运算

1.补码加减法运算公式

在计算机中

(1)加法

A+B整数:【A】补+【B】补=【A+B】补(mod 2^(n+1))

A+B小数:【A】补+【B】补=【A+B】补(mod 2)

(2)减法: A-B=A+(-B)

A-B整数:【A-B】补=【A+(-B)】补(mod 2^(n+1))

A-B小数:【A-B】补=【A+(-B)】补(mod 2)

补码运算:连同符号位一起相加,符号位产生的进位自然丢掉

加法例题:

97d2e165e524058ca079e027e4ad6279.png

f1ef3964bd951d257f46d712608bc300.png

减法例题

1.设机器数字长为8位,(含1位符号位),A=15,B=24,用补码求A-B

1deb96ec507cf6508bf0bb2f6b209ae7.png

3.溢出判断

(1)一位符号位判溢出

参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出。

两个正数相加,如果补码最后得到的结果为负数,那就说明发生了溢出错误,但是如果有效位有进位的话,会进到数值位去,使得相加后的符号位变为1,这样两个正数相加就变成了负数,显然是错误的,发生率溢出。

两个负数相加,本身补码的符号位都为1,符号位肯定会发生进位,并且最高位丢弃,如果此时负数的有效位部分没有进位,那么两个负数相加后的符号位就变成了0,显然发生了溢出。

异或运算:

最高有效位进位:数值的最高位在运算时产生的进位

符号位产生的进位进行异或运算

若得到得结果为1,两个进位不相同,可判断出发生溢出

38d87823a64a7651d5403a224d397755.png

例如:

eb6413b9444f3cf81e7385fbb72cde1d.png

举例:

A=-9 对应的二进制1,0111

B=-5 对应的二进制1,1011

A+B=11,0010

逗号后面进了1,为最高有效位的进位,它与数值为的最高位1异或得结果为0,表示没有发生溢出

(2)两位符号位判断溢出

假设做存小数定点机中的加法运算,将补码的mod由2改为4

278ba5091a2b7ec73ed1c5856b4376ee.png

这种形式的补码,即使X>0,也要在小数点前面加2位,小数点数值部分设置两位符号位,小数点数值部分和X相同,(并不是说补码和在纸上写的真值的形式完全相同)

同样如果是负数,采用4位mod,经过这种变换,数值的数字的符号位,就变为2个1,然后是小数点,后面是每位取反,末尾加1

若为整数,原来用2^(n+1)作为整数的mod

若采用双符号位,mod要变为2^(n+2)

若为整数形式,求补码mod,符号位是m位;

若为正数m个0,后面是数值部分

若为负数m个1,后面的数值部分要每位取反末尾加1

所以可以推广为以4为mod,以8为mod

6191eb71d6fd0a0fe2515a341086cc44.png

判断最高有效位与符号位是否相等来判断是否溢出

若结果的双符号位相同,未溢出

若结果的双符号位不同,溢出(符号位为10或者01 则发生了溢出)

10,xxxxxxx

01,xxxxxxxx

前面的符号位的第一个符号位,是真正的符号位,第二个符号位,是运算时数值发生溢出产生的符号位

所以最高符号位代表真正的符号位

三、乘法运算

1.分析笔算乘法

A=-0.1101 B=0.1011

b3b22dbb3ef39dffe98b4205cbe0edb0.png

符号位单独处理;

被乘数逐步左移,其数值是本身还是0由乘数的某一位决定的;

四个部分积分别相加;

乘积位数扩大一倍

2.笔算乘法改进

A·B=A·0.1011

=0.1A+0.00A+0.001A+0.0001A

=0.1A+0.00A+0.001(A+0.1A)

=0.1A+0.01[0·A+0.1(A+0.1A)]

=0.1{A+0.01[0·A+0.1(A+0.1A)]}

=2^(-1) {1·A+2^(-1)[0·A+2^(-1)(1·A+2^(-1)(1·A+0))]}(在二进制中2^(-1)=0.1)

72ca3ad376ff5dee8bde1ea00c52e119.png

3.改进后的笔算乘法过程

乘法运算可用加和移位实现

n=4,加4次,移4次

由乘数的末尾决定被乘数是否与原部分积相加,然后->1位形成新的部分积1,同时乘数->1位(末尾丢掉),空出高位存放部分积的低位。

被乘数只与部分积的高位相加

(1)原码1位乘运算规则

以小数为例

68d18d971d7ca1385163ab76b1ae3cf4.png

(2)例题:

已知x=-0.1110 y=0.1101 求[x·y]原

999c72e985297d4a2a8d0f007debccd8.png

ef0cf7671d05f319d2c9bcbaeb65c909.png

则[x·y]原=1.10110110

特点:

绝对值运算

用移位的次数判断乘法是否结束

四、除法运算

1.分析笔算除法

X=-0.1011 y=0.1101 求x/y

d0b9a9aab41ebc812a6525e0e36a6f36.png

x/y=-0.1101

余数 0.00000111

1.上商后补0,和右移1位的除数0.01101做比较,比现在加0后的被除数小,上1,减掉右移1位的除数;

2.添0,和右移2位的除数做比较,小数后有2个0,显然比现在的余数小,上商1,减掉右移2位的除数,得到新余数;

3.添0,把新余数和右移3位的除数0.0001101做比较,比现在的余数大,上商0,继续给新的余数添0,和右移4位的除数0.00001101做比较,比新余数小,上商1,减法得到余数

当商的位数和除数的位数一样时停止

2.笔算除法和机器除法比较

e4cfe91be9d7f3299faca0c470bdbb5b.png

3.原码除法

以小数为例

8e9df7cd9ea1f98182346d726293921e.png

特点

商的符号位单独处理x与y异或运算

数值部分为绝对值相除x^* / y^*

小数定点除法x^* < y^* 整数定点除法x^* > y^*

被除数不等于0,除数不能为0

(1)恢复余数法

例题:

x=-0.1011 y=-0.1101 求[x/y]原

解:[x]原=1.1011 [y]原=1.1101 [y^* ] 补=0.1101 [-y ^* ]补=1.0011

做减法目的:试探上商为1还是0

a3b4ce40da2d33e3fc2c01a442fc9831.png

所有x^* / y^*=0.1101

[x/ y]原=0.1101

一共进行了5次上商,4次移位,第一次上商判断是否发生溢出:

若在小数定点机中,第一次上商上1,说明发生溢出,商的值大于1,所有只能表示绝对值小于1的数

特点:

余数为正:上商1

余数为负,上商0,恢复余数

和传统除法的区别:余数左移而不是原来的除数右移;由于先做的是减法操作,上商0的时候,不应该做减法,所以要恢复余数,恢复余数之后,再把余数左移1位,它的值扩大2倍;和除数再进行比较,以决定下一个上商为0或1,循环

(2)不恢复余数法(加减交替法)

恢复余数法运算规则

6fcb88903c2c66f059e8edd9b800186a.png

不恢复余数法运算规则(加减交替)

8459d750b5ba8d1fcad6ff37e36b586d.png

例题:

x=-0.1011 y=-0.1101 ,求[x/y]原

解:[x]原=1.1011 [y]原=1.1101 [y*]补=0.1101 [-y*]补=1.0011

6a26a67eb9de2c056d49174bffe93de2.png

符号位x=1与y=1异或得到为0

x^* / y^*=0.1101

[x/y]原=0.1101

特点:

上商n+1次

第一次上商判断是否溢出(判断被除数和除数直接的大小关系)

在小数定点机中,被除数的绝对值大于除数的绝对值,第一次上商为1就发生了溢出,移位n次,直到第一次上商处于最后一位的商的值移到符号位的位置;做了n+1次加法

用移位的次数判断除法是否结束

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
含C源程序、Proteus原理图、PCB图、报告 本设计是实现一个有、乘、除、函数计算功能和电子时钟的多功能计算器。它的硬件主要由四部分组成,一个STC89C52单片机芯片,一块LCD1602液晶显示器,一个4*4的键盘,各种功能设置按键。 软件设计采用C语言编写,实现了14浮点数内的、乘、除基本的四则运算,带有‘sin’、‘cos’、‘tan’、‘exp’、‘ln’、‘lg’、‘倒数’、‘x^y’、‘sqrt’、‘fmod ’10个常用数学函数运算。此外该计算器除了计算功能以外还具有时钟的功能 设计实物操作说明 1)、开机默认为时钟模式,按CS键在计算器和时钟模式之间切换。 2)、时钟:按TS&s键可以进行时间的设置,输入格式为 xx。xx。xx , 按‘=’键确认,按cs退出设置。 3)、计算器: (1)、’0‘~’9‘、‘.’为数字键;+ - * /为运算符号;C 是计算器复键; DEL退格键撤销上次键入,可连续撤销 M+ 存储有上次运算计算结果和数据Men,按M+输出上次结果, 按TS&s 后再按此键输出Men,’M+‘ ‘TS&s’‘M+'对数据Men进行更新; TS&s键在计算器模式为复用功能键,按 一下它在按数字键可以调用数字键所代表的 函数,可以在复用和非复用模式之间转换;标志在左下角 (2)、运算的流程 :(符号)A 运算符 (符号)B A、B是参与运算的数据,可以是键入的 数字,也可 以是函数 除了2、3的)和 M+中的数据; 符号即+、-号,可带可不带;如果不是按等号键得结果而是按运算符,则 本次的运算结果和按的这个运算符成为下次的A 和运算符,从而进行连续计算。 函数说明:Func (符号)C Func为函数,符号为+-,C只能是数字、M+、π 另:fmod和想x^y函数因为要两个参数,当运算符使用。 函数:sin 正弦函数 cos余弦函数 tan正切函数 exp 以e为底的指数函数 ln 自然对数值 lg 以10为底的对数 sqrt 平方根 dao 倒数 π 圆周率当数据使用,前面可以带权,例 0.5π 度 角度输入 (参数) x^y x的y次方 (参数) f% A/B的余数(精度)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值