计算机组成原理——浮点数加减运算&强制类型转换

简介: 计算机组成原理——浮点数加减运算&强制类型转换

浮点数的加减运算


我们可以先通过十进制的浮点数加减运算步骤来类推二进制的


十进制浮点数加减运算步骤:


浮点数加减运算包括五个步骤:① 对阶② 尾数加减③ 规格化④ 舍入⑤ 判溢出


例如:计算9.85211 × 1012 + 9.96007 × 1010


解:



二进制浮点数的加减运算


上面我们进行了十进制的浮点数的加减运算,下面我们可以以此类推,也按照上面五个步骤来做


直接看一个例题:已知十进制数X=−5/256、Y=+59/1024,按机器补码浮点运算规则计算X−Y,结果用二进制表示,浮点数格式如下:阶符取2位,阶码取3位,数符取2位,尾数取9位


解:


首先我们先用补码表示阶码和尾数,


5D = 101B,1/256 = 2-8 → X = - 101 × 2-8 = - 0.101 × 2-5 = - 0.101 × 2-101

59D = 111011B,1/1024 = 2-10 → Y = + 111011 × 2-10 = + 0.111011 × 2-4 = + 0.111011 × 2-100


再转化成补码形式


X:11011,11.011000000


(X是负数 转化成补码取反+1 阶码 尾数都一样操作)


Y:11100,00.111011000


1. 对阶


使两个数的阶码相等,小阶向大阶看齐,尾数毎右移一位,阶码加1


① 求阶差:[ΔE]补=11011+00100=11111,知ΔE=−1


② 对阶:


X:11011,11.011000000 → 11100,11. 101100000


X = - 0.0101 × 2-100


2. 尾数加减


-Y:11100,11.000101000


(求码的负数的方法:连符号位一块取反+1)


然后让X加上-Y


11.101100000
+   11.000101000
  10.110001000


所以X-Y:11100, 10.110001000


3. 规格化


X-Y:11100, 10.110001000 à 11101,11.011000100


4. 舍入


无舍入


5. 判溢出


常阶码,无溢出,结果真值为2−3×(−0.1001111)2


浮点数的加减运算——舍入规则


“0”舍“1”入法:


类似于十进制数运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。


恒置“1”法:


尾数右移时,不论丢掉的最高数值位是“1”还是“0”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。


例如



强制类型转换



转化的可操作性


char → int → long → double


float → double


int → float:可能损失精度


float → int:可能溢出及损失精度


结论:范围、精度从小到大,转换过程没有损失


原因:拿32位来说:


int:表示整数,范围 -231 ~ 231-1 ,有效数字32位


float:表示整数及小数,范围 ±[2-126 ~ 2127×(2−2−23)],有效数字23+1=24位


相关文章
|
存储
【数据结构】连通图、连通分量与强连通图、强连通分量—区别在于强,强强在哪里?
【数据结构】连通图、连通分量与强连通图、强连通分量—区别在于强,强强在哪里?
11644 1
【数据结构】连通图、连通分量与强连通图、强连通分量—区别在于强,强强在哪里?
|
安全 网络安全 数据安全/隐私保护
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
网络协议 开发工具 git
解决 git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese
在使用 Git/Git小乌龟 进行代码管理的过程中,经常会遇到各种各样的问题,其中之一就是在执行 git clone 或 git pull 等操作时出现 “fatal: unable to access ‘https://github.com/…/.git’: Recv failure Connection was reset” 的报错。这个问题通常是由网络连接问题或代理设置不正确导致的。在我的个人使用经验中,我亲自尝试了四种方法,它们都能够有效地解决这个报错。个人比较推荐方法二。
9224 1
|
缓存 自然语言处理 安全
快速调用 Deepseek API!【超详细教程】
Deepseek 强大的功能,在本教程中,将指导您如何获取 DeepSeek API 密钥,并演示如何使用该密钥调用 DeepSeek API 以进行调试。
|
IDE 网络安全 开发工具
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
本文介绍了如何使用VS Code通过Remote-SSH插件连接远程服务器进行代码开发,并与PyCharm进行了对比。作者认为VS Code在连接和配置多个服务器时更为简单,推荐使用VS Code。文章详细说明了VS Code的安装、远程插件安装、SSH配置文件编写、服务器连接以及如何在连接后切换文件夹。此外,还提供了使用密钥进行免密登录的方法和解决权限问题的步骤。
12430 0
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
|
Ubuntu Linux 数据安全/隐私保护
Windows 怎么启用WSL
Windows 怎么启用WSL
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
76885 5
详解HTTP四种请求:POST、GET、DELETE、PUT
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
31387 0
|
网络协议 网络架构
MTU 和 MSS 关系、 IP分片、TCP分段
这篇文章详细解释了MTU(最大传输单元)和MSS(最大报文段长度)的关系,包括它们在不同网络层的作用、如何影响IP分片和TCP分段,以及实际网络环境中如何通过调整MTU和MSS来解决数据传输问题。
2711 0