定点数的运算

目录

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/394232.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java日志框架

笔记学习原视频(B站):全面深入学习多种java日志框架 目前常见日志框架有: JULLogbacklog4jlog4j2 目前常见的日志门面(统一的日志API): JCLSlf4j 一、 老技术(基本都弃用了&…

STM32——外部中断(EXTI)

目录 前言 一、外部中断基础知识 二、使用步骤 三、固件库实现 四、STM32CubeMX实现 总结 前言 外部中断(External Interrupt,简称EXTI)是微控制器用于响应外部事件的一种方式,当外部事件发生时(如按键按下、传感器信号…

软件设计模式概述

模式的诞生 模式(Pattern)起源于建筑业而非软件业 模式之父——美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander(克里斯托弗亚历山大)博士 《A Pattern Language: Towns, Buildings, Construction》——253个建筑和城市规划模式。 他给出…

atsec增加Swift CSP评估资质

atsec信息安全评估员现已被Swift列为Swift客户安全计划(CSP:Customer Security Programme)认证评估员目录中的评估提供商,可以帮助全球金融机构评估其针对CSP强制性和咨询性控制的合规级别。在金融行业,Swift要求使用其…

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log 1. Bin Log(二进制日志)2. Redo Log(重做日志)3. Undo Log(回滚日志) 💖The Begin💖点点关注,收藏不迷路&…

C++现代教程四

float转string不带多余0 float a 1.2; std::tostring(a); // 1.200000 std::ostringstream strStream; strStream << a; // 1.2 if (!strStream.view().empty()) // 判定流有数据// 边框融合 float measureText(std::u8string text, FontTypes::Rectangle &recta…

科研绘图系列:R语言圆形条形图(circular barplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 介绍 圆形条形图(circular barplot)是一种条形图,其中的条形沿着圆形而不是线性排列展示。这种图表的输入数据集与普通条形图相同:每个组(一个组即一个条形)需要一个数值。(更多解释请参…

IDEA2024.2重磅发布,更新完有4G!

JetBrains 今天宣布了其 IDE 家族版本之 2024.2 更新&#xff0c;其亮点是新 UI 现在已是默认设置&#xff0c;并且对 AI Assistant &#xff08;AI助手&#xff09;进行了几项改进。 安装密道 新 UI 的设计更加简约&#xff0c;可以根据需要以视觉方式扩展复杂功能。值得开发…

Linux 下查看 CPU 使用率

目录 一、什么是 CPU 使用率二、查看 CPU 利用率1、使用 top 查看2、用 pidstat 查看3、用 ps 查看4、用 htop 查看5、用 nmon 查看6、用 atop 查看7、用 glances 查看8、用 vmstat 查看9、用 sar 查看10、dstat11、iostat 三、总结 CPU 使用率是最直观和最常用的系统性能指标&…

QT生成.exe文件无法在未安装QT的电脑上运行的解决办法

在没有安装qt的电脑上运行qt生成的exe文件&#xff0c;提示&#xff1a; The application failed to start because no Qt platform plugin could be initialized 在网上找了很多办法&#xff0c;我尝试了 手动&#xff1a; 1、修改环境变量&#xff0c;2&#xff0c;添加pla…

C#开发编程软件下载安装

1、Visual Studio 2022社区版下载 2、开始安装 3、安装进行中 。。。。

【linux】curl命令用法

curl命令认识 curl命令其实在平常工作中就已经在使用了&#xff0c;但是一直没有系统看过&#xff0c;就在这记录下&#xff0c;以后要用的话&#xff0c;可以在这儿查阅。 curl命令写的更清楚一点其实是cURL&#xff08;client url&#xff0c;客户端URL或者command url命令…

QT(2.0)

1.常用控件的介绍 1.1 TextEdit QTextEdit表示多行输入框&#xff0c;也是一个富文本&markdown编辑器&#xff0c;并且能在内容超出编辑框范围时自动提供滚动条。 核心属性 属性 说明 markdown 输入框内持有的内容&#xff0c;支持markdown格式&#xff0c;能够自动的…

OpenGL实现3D游戏编程【连载3】——3D空间模型光照初步

1、本节实现的内容 上一节课&#xff0c;我们建立了简单的坐标系&#xff0c;同时也显示了一个正方体&#xff0c;但正方体的颜色为纯红色&#xff0c;好像一个平面物体一样&#xff0c;我们这节课就可以加一些光照&#xff0c;并创建更多的模型&#xff0c;使这些物体变得更加…

显示学习5(基于树莓派Pico) -- 彩色LCD的驱动

一 环境搭建 使用的ST7715S驱动的1.8寸彩色屏&#xff0c;主控是我们熟悉的树莓派Pico。软件环境是micropython。连接是屏幕直接从Pico取3.3V的供电&#xff0c;然后总线用的SPI。 ST7735 PinPico PinVCC3.3VGNDGNDSCL (SCK)GP10SDA (MOSI)GP11RES (RST)GP17DC&#xff08;A0…

【HarmonyOS NEXT星河版开发学习】小型测试案例01-今日头条置顶练习

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面 ​ 前言 本系列可能是博客首发&#xff0c;鸿蒙开发星河版是一个全新的版本&#xff0c;由于参考视频较少鸿蒙开发不被重视导致csdn上面并没有全套的学习路线&#xff0c;…

第20周:Pytorch文本分类入门

目录 前言 一、前期准备 1.1 环境安装导入包 1.2 加载数据 1.3 构建词典 1.4 生成数据批次和迭代器 二、准备模型 2.1 定义模型 2.2 定义示例 2.3 定义训练函数与评估函数 三、训练模型 3.1 拆分数据集并运行模型 3.2 使用测试数据集评估模型 总结 前言 &#x1…

【JUC】03-CompletableFuture使用

1. CompletableFuture CompletableFuture可以进行回调通知、创建异步任务、多个任务前后依赖可以组合处理、对计算速度选最快。  CompletableFuture提供了一种类似于观察者模式的通知方式&#xff0c;可以在任务完成后通知监听方。 CompletableFuture实例化用CompletableFutur…

【弱网】模拟弱网环境

fiddler工具 调整上传/下载速率 打开fiddler脚本工具&#xff0c;在上方状态栏选择 Rules -> Customize Rules…&#xff0c;打开ScriptEditor编辑器 修改上传/下载速率&#xff0c;实现模拟指定弱网环境 计算公示&#xff1a;[1/(上或下行速率/8)] x 1000 网络上行下载2G2…

【Hive】学习笔记

Hive学习笔记 【一】Hive入门【1】什么是Hive【2】Hive的优缺点&#xff08;1&#xff09;优点&#xff08;2&#xff09;缺点 【3】Hive架构原理&#xff08;1&#xff09;用户接口&#xff1a;Client&#xff08;2&#xff09;元数据&#xff1a;Metastore&#xff08;3&…