计算机的算术运算之浮点数
3.5 浮点运算
科学计数法:小数点左边只有一位数字的表示数的方法。
规格化:没有前导0的浮点表示法。
二进制小数格式:
1.xxxxxxxxx X 2^yyyyy
浮点:二进制小数点不固定的数的计算机表示。
3.5.1 浮点表示
尾数:该值通常在0和1之间,放置在尾数字段中。上面的x
指数:在浮点运算的数值表示系统中,放置在指数字段中的值。上面的y
浮点数通常占用多个字的长度。下图S是浮点数的符号(1表示负数),指数由8位指数字段(包括指数的符号)表示,尾数由23位数表示。这种表示称为符号和数值,符号和数值的位是相互分离的。

通常来讲,浮点数可以这样表示:

F是尾数字段中表示的值,而E是指数字段表示的值。
使的RISC-V计算机具有很大的运算范围,小到2.0x10^-38,大到2.0x10^38,计算机都能表示出来。
但仍然会存在数太大和太小表示不出来的情况,和整数一样,浮点运算也会发生溢出问题。
上溢:正指数太大而无法用指数字段表示的情况。
下溢:负指数太大而无法用指数字段表示的情况。
双精度:以64位双字表示的浮点数。
单精度:以32位字表示的浮点值。

双精度浮点数需要一个RISC-V双字才能表示,如图所示,S仍然是数的符号位,指数字段为11位,尾数字段为52位。
表示实数范围,小到2.0x10^-308,大到2.0x10^308。
3.5.2 例外和中断
有些计算机会通过引发例外,有时称作中断来告知问题的出现。
例外:也称为中断,打扰程序执行的意外事件,用于检测溢出。
中断:来自处理器之外的例外(有些体系结构用术语中断表示所有的例外)。
3.5.3 IEEE 754 浮点数标准

例如:0/0或无穷减去无穷,这个符号是NaN,表示不是一个数。
3.5.4 浮点加法
9.999x10^1+1.610x10^-1,有效数位保存4位十进制,指数字段保存两位十进制数字。
- 第一步:指数较小的数的小数点和指数较大的数的小数点对齐,0.01610x10^1
- 第二步:将两个数有效位相加,9.999+0.016=10.015
- 第三步:对和进行移位,调整指数大小,1.0015x10^2
- 第四步:我们假定有效位数可能只有四位(不包括符号位),对结果四舍五入,1.002x10^2
例题:二进制浮点数加法
尝试将0.5和-0.4375用二进制相加
答案:假设保持4位精度
0.5=1/2=1.000x2^-1
-0.4375=-7/16=-7/2^4=-111/2^4=-0.0111=1.110x2^-2

以最高次幂为准,1.000x2^-1-0.111x2^-1=0.001x2^-1=1.000x2^-4=1/16=0.0625
3.5.5 浮点数乘法
3.5.6 RISC-V 中的浮点指令

3.5.7 精确算术
浮点数无法做到真正的精确的表示,通常只能用近似值来表示。
保护位:在浮点运算的中间计算中,保留在右侧的两个额外位的第一位,用于提高舍入精度。
舍入位:是中间结果符合浮点格式的方法,目标通常是找到符合格式的最接近的数,它也是在浮点运算的中间运算中保留在右侧的两个额外位的第二位,可以提高舍入精度。
例题:利用保护位进行舍入
最后位置单位(ulp):用于表示在实际数和可表示数之间的有效数位中最低有效位上的误差位数。
粘滞位:用于舍入时除了保护位和舍入位之外的位,当右侧有非零位时就设为1.
混合乘加:一条既执行乘法又执行加法的浮点指令,但只有在加法后进行舍入。
0.30000000000000004
转为二进制
=001100110011001100110010
3.5.8 总结

3.6 并行性与计算机算术:子字并行
许多图形系统最初使用8位数据来表示三原色中的一种,外加8位来表示一个像素的位置。
在电话会议和视频游戏中添加了扬声器和麦克风对声音的支持,音频采样需要8位以上的精度,但16位精度就已经足够了。
通过对128位加法器内划分进位链,处理器可以同时对16个8位操作数,8个16位,4个32位和2个64位操作数的短向量进行并行操作。这种分割加法器的开销很小,但带来的加速可能很大。将这种在一个宽字内部进行的并行操作称为子字并行,更通用的名称是数据级并行(data level parallelism)。对于单指令多数据,他们也被称为向量或SIMD。
3.7 实例:x86中的SIMD扩展和高级向量拓展
x86的原始MMX(MultiMedia eXtension,多媒体扩展)包含操作整数短向量的指令。而后,SSE(Streaming SIMD Extension,流式SIMD扩展)提供了操作单精度浮点数短向量的指令。在2001年,Intel在其体系结构中增加了包含双精度浮点寄存器及其操作的144条指令作为SSE2的一部分,它包含了8个可用于浮点数操作数的64位寄存器。AMD将其拓展到16个寄存器,作为AMD64的一部分,称为XMM,Intel将其标记为EM64T以供使用。
下图为:x86的SSE/SSE2浮点指令

除了在寄存器中存放单精度和双精度数,Intel还允许将多个浮点操作数组合(packed)到单个128位SSE2寄存器中:4个单精度或2个双精度。因此,SSE2的16个浮点寄存器实际为128位宽。如果操作数能够在存储器中组织成128位对齐的数据,则每条128位数据传输指令可以载入和存储多个操作数。这种组合的浮点数格式可以并行运算4个单精度(PS)或2个双精度(PD)数。
2011年,Intel使用高级向量拓展(Advanced Vector Extensions,AVX)将寄存器的位宽再次翻倍,现称为YMM。因此,现在单精度操作可以指定8个32位浮点运算或4个64位浮点运算。原有的SSE和SSE2指令现在可以操作YMM寄存器的低128位,因此,为了使用128位和256位操作,在SSE2操作的汇编指令前加上字母"v"表示向量,然后使用YMM寄存器名而不是XMM寄存器名,例如:执行2个64位浮点加法的SSE2指令。
addpd %xmm0, %xmm4
变为
vaddpd %ymm0, %ymm4
该指令现在产生4个64位浮点加法,2015年,英特尔将寄存器扩展至512位,现在称为ZIMM,在某些微处理器中使用了AVX512。英特尔已宣布计划在x86架构的最新版本中将AVX寄存器扩展到1024位。
3.8 性能提升:子字并行和矩阵乘法
前面一大段没耐心看。。。
结论:该AVX版本的速度提高了7.8倍,这非常接近于使用子字并行单次执行8倍的操作量时所期望的8倍提速。
3.9 谬误和陷阱
算术谬误和陷阱通常来源于计算机算术的有限精度和自然算术的无限精度之间的差异。
谬误:正如左移指令可以替代一个乘以2的幂的整数,右移等同于除以一个2的幂的整数。
陷阱:浮点加法不满足结合律,由于浮点数是实数的近似值,且计算机算术的精度有限,因此结合律不适用于浮点数。
谬误:适用于整型数据类型的并行执行策略也适用于浮点数据类型。
谬误:只有理论数学家关心浮点精度。
Intel为用户免费更换新版Pentium处理器,损失5亿美金。
相关文章:
计算机的算术运算之浮点数
3.5 浮点运算 科学计数法:小数点左边只有一位数字的表示数的方法。 规格化:没有前导0的浮点表示法。 二进制小数格式: 1.xxxxxxxxx X 2^yyyyy 浮点:二进制小数点不固定的数的计算机表示。 3.5.1 浮点表示 尾数:…...
Sqlite3 操作笔记
一、 数据格式 支持数据格式 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型: 1.NULL:空值。 2.INTEGER:带符号的整型,具体取决有存…...
mysqlRouter读写分离
数据库优化项目 使用中间件ProxySQL实现读写分离降低服务器压力,查看慢查询日志,反馈慢查询优化查询速度,清除无用数据,添加zabbix对mysql的监控。 ProxySql读写分离: 环境:mysql集群134、133 Mysql toute…...
【修订中】ffmpeg 知识点
一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时,通常会导致水印所…...
Rust初踩坑
一、下载 到官网https://www.rust-lang.org/zh-CN/tools/install下载你需要的版本 二、安装 执行rustup-init 文件,选择1 按提示直到安装完成 可以通过以下命令测试: rustc -V # 注意的大写的 V cargo -V # 注意的大写的 V三、在VScode中…...
element-ui 的el-calendar日历组件样式修改
<div style"width:100%;height:calc(100% - 35px);margin-top: 5px;"><el-calendar v-model"calendar" style"height: 100%;"></el-calendar></div> css部分 <style>/* 去除底色 */ /deep/ .el-calendar {backg…...
LinuxDebian系统安装nginx
1、安装了必要的开发工具和库文件 sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev2、下载Nginx源码 cd /home/kylin wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.26.2.tar.gz cd nginx-1…...
Redis 数据类型Streams
目录 1 基本特性 2 主要操作命令 2.1 XADD key ID field value [field value ...] 2.2 XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] 2.3 XRANGE key start end [COUNT count] 2.4 XREVRANGE key end start [COUNT count] 2.5 XGROUP …...
基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会
9月下旬,火山引擎数据飞轮研讨会在北京举办,北京基智科技有限公司(以下简称“基智科技”)CEO张文战作为积极探索大模型应用领域的企业代表,围绕“数据飞轮如何转进企业业务流”展开主题分享,并介绍基智科技…...
【AUTOSAR标准文档】AotuSar结构横向分层详解(RTE、BSW)
Top view The AUTOSAR Architecture distinguishes on the highest abstraction level between three software layers: Application, Runtime Environment and Basic Software which run on a Microcontroller. 译文:AUTOSAR架构在最高抽象层次上将软件分为三层&…...
新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...
1. 路由定义
1. 通过配置文件形式 配置方式与laravel的配置方式相似 <?php use Hyperf\HttpServer\Router\Router;Router::get(/hello-hyperf, function () {return Hello Hyperf.; });// 设置一个 GET 请求的路由,绑定访问地址 /get 到 App\Controller\IndexController 的 …...
我们可以用微服务创建状态机吗?
大家好,我是锋哥。今天分享关于【我们可以用微服务创建状态机吗?】面试题?希望对大家有帮助; 我们可以用微服务创建状态机吗? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 是的,微服务架构可…...
邦芒贴士:职场新人需远离的7种坏习惯
咱们每一个人都会有这样那样的毛病,而试用期就是试毛病的大小。对于职场新人来说,第一份工作很容易暴露这样那样的职业毛病。职业习惯直接决定了我们以后的职业发展,职业能力。对于职场新人来说,在试用期内,一些职场坏…...
面向医院的统一支付平台产品经验分享
我们面向医院的统一支付平台其实应该属于四方平台的范畴,依托于微信、支付宝等第三方支付平台和银联、银行等渠道生存。 二、医院常见系统说明: 先普及一下医院的系统情况: HIS(医院信息系统Hospital Information System):医院内的核心系统,为医院所属各部门提供病人诊…...
http作业
配置nginx服务通过ip访问多网站 1、前提配置 2、安装nginx服务 3、配置多IP 在linux主机上查看ip地址 4、定义nginx文件 5、在主机创建文件,重启nginx服务 6、测试...
AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】
Mac分享吧 文章目录 AlDente Pro for Mac 充电限制保护工具 安装完成,软件打开效果一、AlDente Pro for Mac 充电限制保护工具 Mac电脑版——v1.28.41️⃣:下载软件2️⃣:安装软件,将安装包从左侧拖入右侧文件夹中,等…...
C语言数据结构之算法复杂度
目录 一、数据结构是什么 二、算法是什么 三、算法的效率 3.1 复杂度的概念 四、时间复杂度 4.1 大O渐进表示法 4.2 算法题分析 五、空间复杂度 5.1 复杂度对比 5.2 算法题题分析 正文开始 一、数据结构是什么 每个计算机专业的同学在大学都会接触到一门计算机必修课《数…...
HDU RSA
翻译成中文后: 思路:由题易得,d * e y * f ( n ) 1 ,且gcd ( e , f ( n ) ) 1,所以用扩展欧几里得求出 d ,但要保证 d 是非负的,最有用快速幂求出每个字符即可。 #include<bits/stdc.h> using namespace std;…...
数据仓库建设 : 主题域简介
在数据仓库建设中,主题域是数据模型的一个重要概念,它帮助构建逻辑清晰、层次分明的数据结构。主题域的设计基于企业的业务结构,将业务中的关键部分提炼出来,划分为若干个主题域。每个主题域对应一个特定的业务领域,便…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
