定点数的运算

目录

1.定点数的移位运算

1.1算数移位

数学含义:

规律总结:

1.2逻辑移位

1.3循环移位

不带进位位

带进位位

2.定点数的加减运算

3.定点数的乘除运算

3.1原码

一位乘法

除法

3.2补码

一位乘法

除法


1.定点数的移位运算

1.1算数移位

数学含义:

左移乘以二,右移除以二。

符号位不参与移位,保持不变。

码制码值左移右移空位添加
正数原码=反码=补码0010 11100101 11000001 01110

码制码值左移右移空位添加
负数原码1010 11101101 11001001 0111左移:0
右移:0
反码1101 00011010 00111110 1000左移:1
右移:1
补码1101 00101010 01001110 1001左移:0
右移:1

        其实仔细观察会发现:由于补码是在反码的基础上加1,所以从左往右,以补码和反码的不同的位为界限的话,

界限左边:补码反码一样,所以进行右移时最左边会出现空缺,可以像反码一样直接补1。

界限右边:则不同 ,进行左移时最右边会出现空缺,需要补0。

规律总结:

码制添补代码
正数原码0
反码0
补码0
负数原码0
反码1
补码左移添0
右移添1

1.2逻辑移位

 左移,右移都补0,移出的位舍弃

1.3循环移位

不带进位位

 用移出的位补上空缺

带进位位

 移出的位存入进位位,原进位位补上空缺

2.定点数的加减运算

加法:逢2进1,小学列算式计算;

假设我们要计算 00001010 + 00001011 (逢 2 进 1)

  00001010
+ 00001011
------------
  00010101

个位 0 + 1 = 1,十位 1 + 1 = 10 ,逢 2 进 1 得到 0 并进位 1 到百位,以此类推,所以结果是 00010101 ,即十进制的 21 。

减法:将减数化为补码,与被减数相加,接着逢2进1,小学列算式计算;

计算 00001010 - 00001011 。

00001010 + (-00001011)= 00001010 + [11110101]补 :

求出被减数的补数,也就是补码形式表示的-00001011,然后与被减数 00001010 相加:

  00001010
+ 11110101
------------
  11111111

但因为这是通过补码计算得到的结果,化为原码:10000001 ,实际结果应该是 10 - 11 = -1 。

总结来说,一个数减去另一个数就相当于:这个数加上另一个数的补数:

[x - y]补 = [x]补 + [-y]补

3.定点数的乘除运算

3.1原码

一位乘法

设机器字长为n+1=5位(含1位符号位),[x]原=1.1101,[y]原=0.1010,采用原码一位乘法求x·y

符号单独处理: 符号位 =x 异或 y

数值位取绝对值进行乘法计算

采用运算器模拟:

原码一位乘法: 机器字长n+1数值部分占n位

符号位通过异或确定;

数值部分通过被乘数和乘数绝对值的n轮加法、移位来完成并根据当前乘数中参与运算的确定(ACC)加什么。

        若当前运算位=1,则(ACC)+[|x|]原;

        若=0,则(ACC)+0。

        每轮加法后ACC、MQ的内容统一逻辑右移 

1.初始时,通用寄存器中存被乘数,累加器中需要存乘积的高位,MQ中存乘数以及乘积的地位,注意累加器中的值最开始需要置0。

2.MQ中的第五位是零,ALU往ACC中加0,ACC与MQ中的值整体逻辑右移,超出的位丢弃。 

3.MQ的最后一位是1,ALU向ACC中加上被乘数,接着 ACC与MQ中的值整体逻辑右移,超出的位丢弃。

4. MQ中的第五位是零,ALU往ACC中加0,ACC与MQ中的值整体逻辑右移,超出的位丢弃。

5.MQ的最后一位是1,ALU向ACC中加上被乘数,接着 ACC与MQ中的值整体逻辑右移,超出的位丢弃。

最后,由于符号位不参与运算,所以停止,将符号位单独异或的结果置为结果的符号位,结果正确。

其实不难发现,乘法就是做乘数次被乘数加上被乘数的加法! 

除法

设机器字长为5位(含1位符号位,n=4),x=0.1011,y=0.1101,采用原码加减交替除法求x/y

1.符号位与数值位分开处理

        0异或0 = 0

2.数值位做加减交替法

|x|=0.1011,|y|=0.1101,[|y|]补=0.1101,[-|y|]补=1.0011 

流程图:

 

最后得x/y=+0.1101,余0.0111x2^-4 

3.2补码

一位乘法

n轮加法、算数右移,加法规则如下:

        辅助位-MQ中最低位=1时,(ACC)+[x]补

        辅助位-MQ中最低位=0时,(ACC)+0

        辅助位-MQ中最低位=-1时,(ACC)+[-x]补

补码的算数右移:

        符号位不动,数值位右移,正数右移补0,负数右移补1(符号位是啥就补啥)

实例: 

 设机器字长为5位(含1位符号位,n=4),x = -0.1101,y = +0.1011,采用Booth算法求x乘以y

        [x]补=1.0011,[-x]补=0.1101,[y]补=0.1011

 采用运算器模拟:

1.ACC存乘积高位,MQ存乘积低位,通用寄存器X存被乘数,MQ带一个拓展的辅助位。所以ACC以及X也相应拓展,并采用双符号位。 

2.辅助位-MQ最地位等于-1,ACC+[-x]补,之后ACC和MQ整体算数右移 

3. 辅助位-MQ最地位等于0,ACC+0,之后ACC和MQ整体算数右移 

4. 辅助位-MQ最地位等于1,ACC+[x]补,之后ACC和MQ整体算数右移 

5. 辅助位-MQ最地位等于-1,ACC+[-x]补,之后ACC和MQ整体算数右移 

 6.由于是补码,所以符号位在最后也要参与运算,辅助位-MQ最地位等于1,ACC+[x]补。

除法

 设机器字长为5位(含1位符号位,n=4),x=+0.1000,y=-0.1011,采用补码加减交替除法求x/y

[x]补=00.1000,[y]补=11.0101,[-y]补=00.1011

补码除法:
        符号位参与运算。
        被除数/余数、除数采用双符号位
        被除数和除数同号,则被除数减去除数;


异号则被除数加上除数:
        余数和除数同号,商1,余数左移一位减去除数;
        余数和除数异号,商0,余数左移一位加上除数。

重复n次

 [x/y]补=1.0101,余0.0111x2^-4.

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值