定点数的乘除运算

article/2025/9/27 8:28:24

定点数的乘除运算

  • 定点数的乘法运算
    • 原码一位乘法
    • 手算模拟
    • 补码一位乘法(Booth算法)
  • 定点数的除法法运算
    • 原码除法运算
      • 恢复余数法
      • 不恢复余数法
    • 补码除法运算(加减交替法)
    • 总结

定点数的乘法运算

在计算机中,乘法运算由累加和右移操作实现。根据机器数的不同分为原码一位乘法和补码一位乘法。

原码一位乘法

符号位和数值位是分开求的
乘积符号由两个数的符号位异或形成,
乘积数值部分则是两个数的绝对值相乘之积

手算模拟

符号位:Ps = As ⊕ Bs = 0 ⊕ 0 = 0
手算模拟(二进制)
手算模拟(二进制)
(乘数)0.1011 = 1 * 2-1 + 0 * 2-2 + 1 * 2-4
(被乘数)0.1101 = 1101 * 2-4
0.1101*1.1011=(1101 * 1 * 2-8)+(1101 * 1 * 2-7)+(1101 * 1 * 2-5)用移位实现
【例题】设机器字长为n+1=5位,[x]=1.1101,[y]=0.1011,用原码一位法求x·y。
在这里插入图片描述
正式进行乘法运算之前ACC置为0
当前MQ最低位为1,ACC加上被乘数;当前位为0,ACC加上0。
上图当前位就为1,则ACC应加上被乘数01101,这个运算由ALU即算法逻辑单元里的加法电路实现的,相加的结果会放在ACC寄存器里面(ACC)+(X)—> ACC 00000+01101=01101
然后求下一个位积,由于手动计算时需错位,计算机将ACC和MQ里的数字统一逻辑右移一位,高位补零,此时ACC=00110 MQ=10101;同上当前MQ最低位为1,(ACC)+(X)–>ACC 00110+01101=10011

运算法则:先加法再位移,重复n次数值位有几位就重复几次
红色部分为“部分积”
乘数的符号位不参与运算
修改符号位xs⊕ys= 1⊕0=1
在这里插入图片描述
在这里插入图片描述

运算时可能出现绝对值大于1的情况(但此刻结果并未溢出),部分积和被乘数取双符号位
、、、、、、、、手算模拟、、、、、、、、
手算模拟

补码一位乘法(Booth算法)

进行n轮,加法、移位运算,最后多来一次加法
每次加法可能+0、+[x]、+[-x]
每次移位是"补码的算数右移"
符号位参与运算补码一位乘法
辅助位 - MQ中最低位 = 1时,(ACC)+[x]
辅助位 - MQ中最低位 = 0时,(ACC)+0
辅助位 - MQ中最低位 = -1时,(ACC)+[-x]
补码的算数右移:符号位不动,数值位右移;正数右移补零,负数右移补1(符号位是啥就补啥)

定点数的除法法运算

“累加”–“左移”

原码除法运算

商符和商值分开进行运算。
商符:符号位“异或”形成。Qs=xs⊕ys
商值:|Q|=|x|/|y|

恢复余数法

设机器字长为5位,(含1位符号位,n=4),x=0.1011,y=0.1101,采用原码恢复除数法求x/y.

在这里插入图片描述

在这里插入图片描述
求余数:ACC-(除数)——>ACC
不恢复余数法

不恢复余数法

求|Q|。
1.符号位不参加运算。
2.被除数减去除数(|x|-|y|=|x|+(-|y|)=|x|+[-|y|]
余正商上1,余商左移1,再减去除数
余负商上0,余商左移1,再加上除数

3.当第n+1步余数为负,需加上|y|得到第n+1步正确的余数。(余数和被除数同号)在这里插入图片描述

正数原码补码相同
正数原码补码相同。

补码除法运算(加减交替法)

双符号位表示
加减交替:
1.符号位和数值位一起参加运算,商符自然形成。数值均用补码表示
2.被除数和除数符号决定第一步做加法还是减法:
被除除同号,被除减除数
被除除异号,被除加除数

3.余除同号商上1,余左移1减除数
余除异号商上0,余左移1加除数

4.重复执行第3步操作n次
5.若对商的精度没有特殊要求,则一般采用”末位恒置1“

总结

在这里插入图片描述


http://chatgpt.dhexx.cn/article/3hgDVT8B.shtml

相关文章

定点数的加减法

文章目录 1.补码加法1.1 补码加法公式1.2 补码加法公式证明 2.补码减法3.溢出概念与检测方法3.1 溢出的概念3.2 溢出的检测方法 参考文献 数值运算的核心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表示形式,因此相应有定点数的运算和浮点数的运…

定点数类型

正因为用浮点数表示小数可能会有不精确的情况,在一些情况下我们必须保证小数是精确的,所以设计MySQL的大叔们提出一种称之为定点数的数据类型,它也是存储小数的一种方式: 其中: M表示该小数最多需要的十进制有效数字个…

定点数的表示

计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。所谓定点数和浮点数,是指在计算机中一个数的小数点的位置是固定的还是浮动的:如果一个数中小数点的位置是固定的,则为定点数;如果一个数中小…

定点数运算

reference: http://wenku.baidu.com/link?urlnUzHmqrtKkQ4fOfUb2SW7hBEGS47wlJEw1DS6uW3U3onryAWk-XWlkLHwd3tKbxhoFYDzeDEd3cjYr5ww-MKgpTP_lNYLkjwpXuatw11ply 原补码关系,参考:http://blog.csdn.net/limanjihe/article/details/52440638 补码的设计目的:   …

定点数的表示方法

文章目录 1.定点数的表示形式2.定点数的原码、反码与补码3.定点小数注意事项参考文献 计算机中数值的表示有两种形式,一是定点数(Fixed-point Number),二是浮点数(Floating-point Number)。 1.定点数的表示…

定点数(fixed-point number)的运算

定点数的运算 1. 定点数2. 定点数加减运算3. 定点数加减运算的溢出判断3.1 用一位符号位判断溢出3.2 用两位符号位判断溢出3.3 最高位和次高位判断溢出 4. 乘法运算4.1 分析笔算乘法4.2 笔算乘法的改进4.3 图示4.4 硬件配置4.5 表格示意图 5. 除法运算5.1 分析笔算除法5.2 笔算…

[计算机组成原理]2-4、定点数详解

定点数详解 看笔记一定要心静,慢慢来不急。 定点数解释为小数点固定的数。 我们平常使用的数字大部分都属于定点数。比如1.0;110;192.168等等。这么说可能我们对定点数还是没有什么概念,毕竟没有参照物,那么与定点数…

Java枚举类实现

一、枚举类的特点 1.类的对象只有有限个,且为静态常量 2.当需要定义一组常量时,强烈建议使用枚举类 二、如何定义枚举类 jdk1.5之前:自定义枚举类 jdk1.5 :可以使用enum关键字来定义枚举类 2.1自定义枚举类实现: package enumte…

java枚举

为什么需要枚举? 一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,比如成绩Grade只能为ABCDE。此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。枚举…

Java枚举中定义属性

文章目录 1、复习枚举2、自定义属性3、自定义属性枚举类和常量的对比4、常用方法5、枚举自定义属性在开发中的应用:字典表6、补充:入参校验 刚接触枚举时的例子太简单,就一个Season枚举类,里面四个常量值,后来开发中看…

Java 枚举(Enum)使用

文章目录 枚举引入enum关键字实现枚举enum关键字实现枚举注意事项enum常用方法一览表enum课堂练习enum实现接口 枚举引入 创建Season类, 实例化春夏秋冬四个实例 Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, autumn, winter) 2.只读,不需要修…

Java枚举详解

目录 Java枚举详解 基本介绍 1.自定义类实现枚举 2.使用enum关键字实现枚举 使用enum关键字实现枚举的注意事项 enum的常用方法 enum的使用细节 Java枚举详解 基本介绍 枚举对应英文(enumeration,简写 enum) 枚举是一组常量的集合 枚举属于一种特殊的类,里…

Java枚举(enum)

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为…

如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性

关于pFuzz pFuzz是一款功能强大的Web应用程序防火墙安全检测/绕过工具,可以帮助广大研究人员同时通过多种方式绕过目标Web应用程序防火墙,以测试WAF的安全性。 pFuzz本质上是一款高级红队模糊测试工具,主要用于研究目的。pFuzz基于Python编…

jieba java_【NLP】【一】中文分词之jieba

声明:本文参考jieba官方文档而成,官方链接:https://github.com/fxsjy/jieba 【一】jieba安装 pip install jieba 【二】jieba简介 简介可见jieba官方说明:https://pypi.org/project/jieba/ 总而言之,jieba用于中文分词…

jieba 分词

一.介绍: jieba: “结巴”中文分词:做最好的 Python 中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module. 完整文档见 : GitHub: https://github.com…

jieba学习

Jieba jieba的安装主要功能1.主要有三种模式:2. 加载词典3.词性标注4.关键词提取5.Tokenize:返回词语在原文的起止位置 jieba的安装 先在 [http://pypi.python.org/pypi/jieba/]下载 ,解压后运行 python setup.py install 或者pin install j…

jieba 结巴分词详解

🔗 运行环境:python3🚩 作者:K同学啊🥇 精选专栏:《深度学习100例》🔥 推荐专栏:《新手入门深度学习》📚 极品专栏:《Matplotlib教程》📔 选自专栏…

NLP基本工具之jieba详解

jieba的作用只有分词吗? 简介 jieba(结巴)是百度工程师Sun Junyi开发的一个开源库,在GitHub上很受欢迎,使用频率也很高。 GitHub链接:https://github.com/fxsjy/jieba jieba最流行的应用是分词&#xff0…

jieba分词的最详细解读

目录 一,什么是jieba(结巴)库? 二,jieba库的使用规则 三,jieba库具体使用和实例 一,什么是jieba(结巴)库? 字如其名,结巴库主要用于中文分词&…