网站首页 > 资源文章 正文
乘法的应用千千万
? 浮点乘法和定点乘法的原理是相同的
? 早期处理器通过软件迭代
? 使用加法和移位
? 现代处理器都实现硬件乘法器
? 提高程序性能
硬件模拟软件的“移位-加”操作
? 两个N位数相乘,结果为2N位
? 使用3组触发器,锁存住乘数、被乘数和结果
? 乘数每次算术右移一位,被乘数每次算术左移一位
如果参与运算的是补码?
? 先判断结果符号位
? 将补码转为原码进行运算
? 补上符号位,转换回补码
? 太麻烦,不如自行推导补码乘法算法
? 问题: 已知[X] 补 和[Y] 补 ,求[X*Y] 补 .
? [X] 补 +[Y] 补 =[X+Y] 补 (方括号内为普通加法,方括号外为补码加法)
? 但[X] 补 *[Y] 补 !=[X*Y] 补
? 若[Y ] 补 =y 31 y 30 ......y 1 y 0 ,
? 则Y= -y 31 *2 31 + y 30 *2 30 +......+y 1 *2 1 +y 0 *2 0
已知[X] 补 和[Y] 补 ,求[X*Y] 补
[X*Y] 补 = [X*( -y 31 *2 31 +y 30 *2 30 +......+y 1 *2 1 +y 0 *2 0 )] 补
= [-X*y 31 *2 31 +X*y 30 *2 30 +......+X*y 1 *2 1 +X*y 0 *2 0 ] 补
= [-X*y 31 *2 31 ] 补 +[X*y 30 *2 30 ] 补 +......+[X*y 1 *2 1 ] 补 +[X*y 0 *2 0 ] 补
= - [X] 补 *(y 31 *2 31 ) +[X] 补 * (y 30 *2 30 ) +......+[X] 补 * (y 1 *2 1 ) +[X] 补 * (y 0 *2 0 ) ???
方括号内为普通加法,方括号外为补码加减(符号位扩充到64位再加)
定理:[X*2 k ] 补 =[X] 补 *2 k
? 运算时,根据y i 取0或1,进行操作
? 结果先置为0, [X] 补 扩展为64位
? 当i = 0 ... 30,若y i 为1,将[X] 补 左移i位,补码加法到结果
? 当i = 31,若y i 为1,将[X] 补 左移i位,补码减法到结果
? 和原码“移位-加”算法类似(除了最高位)
补码运算注意
? 符号位扩充到8位,结果保留8位
? 补码减法:按位取反加1(-11010000 = 00101111+1)
将之前的迭代加乘法器稍微修改,就可以实现补码乘法
- 上一篇: 记住这6句话,原码,反码,补码概念不会忘
- 下一篇: 计算机的原码,反码,补码你了解吗?
猜你喜欢
- 2024-09-08 1.2 计算机内信息的表示与存储(计算机内部信息的表示及存储采用的是)
- 2024-09-08 C++手撕底层:位、字节、原码、反码、补码的深入理解
- 2024-09-08 算法水题练习(二)(算法题模板)
- 2024-09-08 二进制是怎么减法运算的?(二进制是怎么减法运算的原理)
- 2024-09-08 “原码、反码、补码”计算机如何更好的实现算法?
- 2024-09-08 PLC的加、减、乘、除指令有什么用?其实功能十分强大!
- 2024-09-08 【1682023】指令:NEG(088)—— 完成二进制求补的功能指令
- 2024-09-08 C语言-自运算、位运算、取反运算(c语言位运算的运算规则)
- 2024-09-08 软件设计(十三)-原码、反码、补码、移码
- 2024-09-08 原码、反码和补码:深度解析C语言中的二进制表示
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)