计算机的浮点数表示法(IEEE 754)

这篇文章与一道题有关:

/*
 * floatScale2 - Return bit-level equivalent of expression 2*f for
 *   floating point argument f.
 *   Both the argument and result are passed as unsigned int's, but
 *   they are to be interpreted as the bit-level representation of
 *   single-precision floating point values.
 *   When argument is NaN, return argument
 *   Legal ops: Any integer/unsigned operations incl. ||, &&. also if, while
 *   Max ops: 30
 *   Rating: 4
 */
unsigned floatScale2(unsigned uf) {
	return 2;
}

题目来自于CMU15-213/lab/datalab

浮点数的表示方法

在上面的题目中没有使用float作为类型传参,而是使用的unsigned,该类型和float一样,都是32字节的,现在我们将重心放回float的表示中:

  • 符号位:1bit
  • 指数部分:8bit
  • 尾数部分:23bit

对于double,其实原理也是一样的:在这里插入图片描述

看完了上面这个描述,想必心中会有很多的疑问,接下来慢慢说。

格式化数

在浮点数的存储中,数字通常是格式化的,什么是格式化的呢?格式化的有什么要求呢?

  1. 符号位(s):跟先前的一样,0表示正数,而1表示负数。
  2. 指数部分(exp):该部分使用移码进行表示。在格式化数中,指数部分不能全为1,它拥有一个计算公式:
    E = E x p − B i a s E = Exp - Bias E=ExpBias
    其中,Exp就是相对应的十进制表示,而Bias也有一个计算公式:
    B i a s = 2 k − 1 − 1 Bias = 2^{k - 1} - 1 Bias=2k11
    这个k,就是在该浮点数中,exp部分有多少个bit表示。Bias的作用就是将浮点数的表示区间进行一个划分,使其在正数和负数区域都有相同的表示范围。
  3. 尾数部分(frac,M):该部分表示浮点数的有效数字部分,它默认会有一个隐含的1(前导1,这个前导1是二进制而不是十进制!),也就是说,这部分实际上是1.xxxxxxx

在这里插入图片描述
至此,我们就能够给出浮点数的计算公式:
v a l = ( − 1 ) s × M × 2 E val = (-1)^s×M×2^E val=(1)s×M×2E
来个例子:在这里插入图片描述

非格式化数

对于非格式化数,它的区别就是在exp(指数部分)上:先前提到,在格式化数中,指数部分不能全为1,而在非格式化数中,它全为0,因此,在浮点数计算公式中,E的计算也改变了:
E = 1 − B i a s E = 1 - Bias E=1Bias
下面这张PPT说的很清楚:在这里插入图片描述

上面提到了,在浮点数表示法中,存在“-0”和“+0”,但是,实际上它们在计算时被认为是相等的。
在格式化数中,会有个隐含的前导1,而非格式化数中没有这个。

特殊值

在这种情况下,exp不全为1的条件被打破,并且变为了exp全为1在这里插入图片描述

PPT中也说的很全了:

  • exp=111…1,frac=000…0,表达无穷大、溢出
  • exp=111…1,frac≠000…0,表示1非数(NaN)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一条SQL在MySQL中的执行过程

图解: 第⼀步:连接器 过程 1. 建⽴连接:与客户端进⾏ TCP 三次握⼿建⽴连接; 2. 校验密码:校验客户端的⽤户名和密码,如果⽤户名或密码不对,则会报错;3. 权限判断&#xff1a…

正多边形拓扑与泛函

(原创:Daode3056) 也许,关于“拓扑”,“泛函”几本书上的内容与实例都是大同小异,总是那么点内容,数学要开拓一些新领域与新内容才能满足不断发展的社会与工业各种需要。本文就以人工智能生成对…

【独立开发前线】Vol.29 专注于电子邮件签名,也可以依靠SEO年入70万美元

今天要给大家分享的案例是MySignature,一个专注于电子邮件签名的产品; 它的官网是:MySignature: Free Email Signature Generator 提到电子邮件签名,很多人想到的肯定是“那不是电子邮件结尾的几行图文介绍吗,这也能做…

CCF-CSP20<2020-09>-第1/2题

202009-1 对称检测点查询 题目:202009-1 题目分析: 给定一群点的坐标,求出距离某点最近的3个点的坐标。 纯模拟即可。 AC代码: // -*- coding:utf-8 -*-// File : 202009-1.cpp // Time : 2024/03/23 // Author …

pajamas 0 publish repo fst in gitee

0. 好久没有blog了,真的好久了,先交代一波 因为半年来发生了很多,计划有变,辞工作,出去耍,找工作,重新计划… 从半年前开始,就想好了,最近这两年应该优先会写代码 &…

uniapp开发App(二)开通 微信授权登录功能(应用签名、证书、包名 全明白)

前言:开发App肯定要包含登陆,常用登陆方式很多,我选择微信登陆。 一、如何获得微信的授权登陆 答:申请,根据uniapp官网的提示有如下三个步骤 开通 1. 登录微信开放平台区,添加移动应用并提交审核&#xf…

热电偶测温仪UT320D 拆机

性能应该还好吧,毕竟是便宜货。本来打算看看学习一下热电偶电路的前端设计,用什么滤波器、保护电路之类的,结果比较失望。 拆机 打开后盖的效果: PCB 另一面没有元件,打眼一看就能看出电路相当简单,功能全…

蓝桥备赛——矩阵读入

题目描述 如上图所示,是一道有关二维前缀和的问题,因为涉及到二维,肯定就是以矩阵的形式进行读入的。 为此,针对矩阵的读入形式进行总结,可以大致总结出两种类型如下: 二维列表推导式 n, m, k map(int…

一百以内累加(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {//初始化变量值&#xff1b;int a 2;int result 1;//循环运算&#xff1b;while (a < 100){//加&#xff1b;result a result;//改变变量值&a…

杨伟民:提高中国消费的七张长效王牌

“新冠疫情冲击以来&#xff0c;需求不足&#xff0c;特别是居民消费不足的问题再一次凸显&#xff0c;我觉得一方面是疫情冲击的短期影响&#xff0c;另一方面也是长期的深层次结构性问题并没有得到解决。”3月25日&#xff0c;在中国发展高层论坛2024年年会“全球经济增长趋势…

C++——C++11线程库

目录 一&#xff0c;线程库简介 二&#xff0c;线程库简单使用 2.1 传函数指针 ​编辑 2.2 传lamdba表达式 2.3 简单综合运用 2.4 线程函数参数 三&#xff0c;线程安全问题 3.1 为什么会有这个问题&#xff1f; 3.2 锁 3.2.1 互斥锁 3.2.2 递归锁 3.3 原子操作 3…

基于springboot实现房屋租赁系统项目【项目源码+论文说明】

基于springboot实现房屋租赁系统演示 摘要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本…

网络类型整理

1、点到点 &#xff1a;在一个网段内只能存在&#xff0c;两个物理节点 MA-多路访问 -- 在一个网段内物理节点的数量不限制 MA--- BMA NBMA 2、BMA -- 广播型多路访问 3、NBMA--非广播型多路访问 注&#xff1a;不同网络类型实际为不同的数据链路层技术&#xff1b;由于二…

AI渣土车监测报警摄像机

随着城市建设的不断发展和交通运输的快速增长&#xff0c;渣土车作为建筑行业中不可或缺的运输工具&#xff0c;承担着大量的渣土运输任务。然而&#xff0c;由于渣土车在运输过程中存在超速、违规变道、碾压行人等交通安全问题&#xff0c;给道路交通和行人安全带来了严重的隐…

OrangePi AIpro(香橙派)远程连接,在windows上显示图形化桌面

OrangePi AIpro&#xff08;香橙派&#xff09;远程连接&#xff0c;在windows上显示图形化桌面 一、连接调试串口1、硬件连接&#xff08;1&#xff09;首先需要准备一根 Micro USB接口&#xff08;老安卓线&#xff09;的数据线&#xff08;2&#xff09;将 Micro USB 接口一…

Docker之ruoyi-vue项目部署

文章目录 创建自定义网络安装redis安装mysql发布若依项目--后端使用Dockerfile自定义镜像运行容器 nginx 创建自定义网络 #搭建net-ry局域网&#xff0c;用于部署若依项目 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1 注意1&#xff1a;关闭宿主…

【uC/OS-III篇】uC/OS-III 创建第一个任务(For STM32)

uC/OS-III 创建第一个任务&#xff08;For STM32&#xff09; 日期&#xff1a;2024-3-30 23:55&#xff0c;结尾总结了今天学习的一些小收获 本博客对应的项目源码工程 源码项目工程 1. 首先定义错误码变量 // 用于使用uC/OS函数时返回错误码 OS_ERR err; 2. 定义任务控制…

非NVIDIA平台下的CUDA的替代方案OpenCL,第一步如何获取PlatformInfo、DeviceInfo

非NVIDIA平台下的CUDA的替代方案OpenCL&#xff0c;第一步如何获取PlatformInfo、DeviceInfo 介绍 当谈到高性能计算&#xff0c;NVIDIA的CUDA框架无疑是一个强大的工具。OpenC&#xff08;Open Computing Language&#xff09;是一个更为通用的解决方案&#xff0c;或者你使用…

MySQL面试必备一之索引

本文首发于公众号&#xff1a;Hunter后端 原文链接&#xff1a;MySQL面试必备一之索引 在面试过程中&#xff0c;会有一些关于 MySQL 索引相关的问题&#xff0c;以下总结了一些&#xff1a; MySQL 的数据存储使用的是什么索引结构B 树的结构是什么样子什么是复合索引、聚簇索…

SVFormer: Semi-supervised Video Transformer for Action Recognition

标题&#xff1a;SVFormer&#xff1a;用于动作识别的半监督视频Transformer 原文链接&#xff1a;https://doi.org/10.48550/arXiv.2211.13222 源码链接&#xff1a;GitHub - ChenHsing/SVFormer 发表&#xff1a;CVPR 摘要 半监督动作识别是一项具有挑战性但至关重要的任…