CMU15-213 课程笔记 04-Floating Point
文章目录
- 浮点数如何用二进制表示
- IEEE 浮点数标准
- IEEE 浮点数实现
- IEEE 浮点数在内存里
- E = exp - bias 计算指数
- M = 1.xxx 尾数计算
- 举例:对一个浮点数进行转换
- 一些关于浮点数的计算等等
浮点数如何用二进制表示
计算机内部的浮点数不是这样存在内存里的(至少C语言不是)但我们可以这样使用二进制来表示浮点数:

这样的表示方法有很大的局限,我们只能方便地表示 1/2,1/4 这样的数,如果要表示 1/3 之类的数字,那么只能是近似值

IEEE 浮点数标准
在1985以前,每一种计算机都可能有他自己的实现浮点数的方法,直到1985年计算机协会发布了 IEEE 754 标准,使得计算机厂商采用了一致的标准来支持浮点数

IEEE 浮点数实现
它使用一种类似科学计数法的方法来表示数字
其中:
- S 是符号位(0 或 1,用来设置是正还是负)
- M 是尾数(是一个在 1 ~ 2 之间的数字)
- 然后乘以 2 的 E 次幂(E 会以二进制幂形式用来扩大或减小 M 尾数,无论是32bits还是64bits)
所有浮点数都必须用这种方式来实现

IEEE 浮点数在内存里
32 bits 计算机中的 float:
- 1 位的 s 用来表示符号
- 8 位的 exp 指数,用来表示一种类似科学计数法的位数
- 23 位的 frac 尾数,也就是科学技术法的前半部分数值

E = exp - bias 计算指数
exp = 000…0 和 exp = 111…1 都是特殊的值,我们稍后讨论
指数 E 的值被解释为:以 偏置 biased 形式表示
所以 E 的实际值是 exp - bias
简单来说,exp 就是那个 7 位的值,把 exp 减去一个 bias 偏置值,就得到了 E 值!
对于 32 bits 的 float 浮点数来说,bias = 127,8 bits 的最高位权重是 128,128 - 1 = 127 就是 bias 了
那么 64 bits 呢?64 bits 的 exp 有 11 位,那么 11 bits 的最高权重就是 1024,1024 - 1 = 1023 就是 bias
我们此时得到了 bias = 127,接下来计算 exp 值
exp 值只需要把 除了第一位 以外 剩下的 7 位 当做二进制数字来计算就好了(这其实也是正负数补码的计算方式!)
这样做的好处是,如果要比较2个浮点数,刨去第一位以后就可以直接进行位运算比较!十分方便
- 最大的值就是 011111…1
- 最小的值就是 10000…0
M = 1.xxx 尾数计算
最小的尾数是 0000…0,此时 M = 1.0
最大的尾数是 1111…1,此时 M 超级接近 2.0
尾数就是 1.xxx 后面的 xxx,你把一堆 0 加起来当然是 0
你把一堆 1 加起来,那就是 1/2 + 1/4 + 1/8 … 最后当然是非常接近 1 的一个数
举例:对一个浮点数进行转换
多说无益,我们来举个例子,令 float F = 15213.0
经过二进制 表示,得到 15213(10进制的)= 11101101101101(二进制的)
使用科学计数法表示,得到 1.1101101101101 乘以 2的13次方
这样我们就得到了尾数 frac 和 M 的值:
- M = (去掉1.) 1101101101101
- frac = 11011011011010000000000
同时我们也得到了:
- E = 13(因为指数是13)
- Bias = 127(32 bits 的 float 就是127)
- Exp = 140(10001100,因为 Exp - Bias = 13,所以 Exp = 140)
这就是结果了,我们成功把 15213 这个十进制数,存到内存这个二进制结构里了~

一些关于浮点数的计算等等
后续关于浮点数在计算机里应用的细节内容可能会补上,暂时跳过,请看原视频~
相关文章:
CMU15-213 课程笔记 04-Floating Point
文章目录 浮点数如何用二进制表示IEEE 浮点数标准IEEE 浮点数实现IEEE 浮点数在内存里 E exp - bias 计算指数M 1.xxx 尾数计算举例:对一个浮点数进行转换一些关于浮点数的计算等等 浮点数如何用二进制表示 计算机内部的浮点数不是这样存在内存里的(至…...
DockerKubernetes ❀ Service下Port端口区分
文章目录 概述案例 概述 在Kubernetes中,Service(svc)是一种抽象机制,用于将一组 Pod 暴露给其他应用程序或服务。Service 可以有三种类型的端口: nodePort:这是 Service 在节点上公开的端口。可以使用此…...
【C++】笔试训练(一)
目录 一、选择题二、编程1、组队竞赛2、删除公共字符 一、选择题 1、以下for循环的执行次数是() for (int x 0, y 0; (y 123) && (x < 4); x);A 是无限循环 B 循环次数不定 C 4次 D 3次 答案:C 2、以下程序的运行结果是&…...
数据结构与算法之集合: Leetcode 349. 两个数组的交集 (Typescript版)
两个数组的交集 https://leetcode.cn/problems/intersection-of-two-arrays/description/ 描述 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1 输入:nums1 [1,2,…...
Unity 内存性能分析器 (Memory Profiler)
一、 安装 安装有两种方式一: add package : com.unity.memoryprofiler方式二: From Packages : Unity Registry 搜索 Memory Profiler 二、 使用 打开:Windows - > Analysis - > Memory Profiler 打开MemoryProfiler界面࿰…...
前端携带Bearer Token
前端携带Bearer Token 在前端使用 axios 发送请求时,可以通过设置请求头来携带 Bearer Token。Bearer Token 是一种常用的身份验证方式,它通常用于 OAuth2 授权流程中。 要在 axios 中携带 Bearer Token,可以通过设置 Authorization 请求头…...
leetcode 周赛 364
参考视频: 单调栈【力扣周赛 364】 文章目录 8048. 最大二进制奇数100049. 美丽塔 I100048. 美丽塔 II100047. 统计树中的合法路径数目 8048. 最大二进制奇数 题目链接 给你一个 二进制 字符串 s ,其中至少包含一个 1 。 你必须按某种方式 重新排列 字…...
开机自启动Linux and windows
1、背景 服务器由于更新等原因重启,部署到该服务上的响应的应用需要自启动 2、Linux 2.1 方式一 编写启动应用的sh脚本授权该脚本权限 chmod 777 xxx.sh 修改rc.loacl 位置:/etc/rc.local 脚本:sh /home/xxxx.sh & 授权rc.local …...
科技云报道:大模型的阴面:无法忽视的安全隐忧
科技云报道原创。 在AI大模型的身上,竟也出现了“to be or not to be”问题。 争议是伴随着大模型的能力惊艳四座而来的,争议的核心问题在于安全。安全有两个方面,一个是大模型带来的对人类伦理的思考,一个是大模型本身带来的隐…...
2023年前端流行什么技术和框架了?
Web前端三大主流框架有React、Vue.js和Angular,由于接触过Vue.js,接下来主讲最新的Vue3.0! Vue3.0作为最新版本的Vue.js框架,拥有更强大的性能和更丰富的功能,为低代码开发平台注入了全新的活力。而JNPF快速开发平台作…...
Nginx 背锅解析漏洞
Nginx 背锅解析漏洞 文章目录 Nginx 背锅解析漏洞1 在线漏洞解读:2 环境搭建3 影响版本:4 漏洞复现4.1 访问页面4.2 上传文件 4.3 上传失败4.4 使用bp进行分析包4.5 对返回图片位置进行访问4.6 执行php代码技巧-图片后缀加./php4.7 分析原因 --》cgi.fix_pathinfo--…...
AI与传统数据库 - ChatGPT风过之后 | 从Duet AI说开来
作者:Ni Demai,是NineData数据库产品专家,曾任阿里云数据库国际产品总负责人,华为高斯 GaussDB 创始团队核心架构师,IBM Db2 资深研发工程师。 Demai 专注 Cloud-Native database 架构设计,分析型 MPP&…...
L1-032 Left-pad C++解法
一、题目再现 根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个…...
Python 用列表实现模拟手机通讯录(简易版)
"""列表实现好友管理系统知识点:1、列表存储信息2、列表增删改查3、嵌套循环4、字符串分割和拼接(重点)5、列表索引"""# 暂存好友信息(程序结束数据删除) friend_info list()input_buf…...
macOS使用官方安装包安装python
新手程序员可能想知道如何在 Mac 上正确安装 Python,这里介绍在 macOS 上安装 Python 的方法。 操作步骤 1.从 Python 官方网站 (python.org) 下载最新的 Python 版本. 单击 macOS 链接并选择最新的 Python 版本。 2.下载完成后,双击包开始安装Python…...
如何重装Windows Mirosoft Store
重装Windows Mirosoft Store 如何重装Windows Mirosoft Store呢?如何下载Windows Mirosoft Store呢?Windows Mirosoft Store不见了咋办?Windows 自带软件不见了咋办等等?写在前面 1.文件准备2.安装 如何重装Windows Mirosoft Stor…...
软考高级系统架构设计师系列论文真题七:基于构件的软件开发
软考高级系统架构设计师系列论文真题七:基于构件的软件开发 一、基于构件的软件开发二、找准核心论点三、理论素材准备四、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系列之:论文题目类型、论文…...
git rebase 修改中间的commit
0. 前言 今天在移植最新版本 kfence 功能的时候,一共需要移植大概40多个 patch,中间有很多patch 存在冲突,需要手动修改后才能合并。当所有的patch 都合并完成进行编译的时候,发现其中一个 patch 手动合并出了个错误。 假如共有…...
登录业务实现 - token登录鉴权
登录业务实现: 登录成功/失败实现 -> pinia管理用户数据及数据持久化 -> 不同登录状态的模板适配 -> 请求拦截器携带token(登录鉴权) -> 退出登录实现 -> token失效(401响应拦截) 1. 登录成…...
内存对齐--面试常问问题和笔试常考问题
1.内存对齐的意义 C 内存对齐的主要意义可以简练概括为以下几点: 提高访问效率:内存对齐可以使数据在内存中以更加紧凑的方式存储,从而提高了数据的访问效率。处理器通常能够更快地访问内存中对齐的数据,而不需要额外的字节偏移计…...
运动数据解读总卡壳?用NotebookLM自动提炼文献+生成假设,3天完成1篇SCI初稿
更多请点击: https://codechina.net 第一章:运动数据解读的瓶颈与AI赋能新范式 传统运动数据分析长期受限于人工标注成本高、多源异构信号对齐困难、时序模式泛化能力弱三大瓶颈。可穿戴设备每秒采集的加速度、陀螺仪、心率变异性(HRV&#…...
国产多模态大模型崛起:技术、场景与未来挑战全解析
国产多模态大模型崛起:技术、场景与未来挑战全解析 引言 在人工智能浪潮席卷全球的背景下,多模态大模型已成为技术竞争的新高地。以GPT-4V、Gemini为代表的国际巨头展现了强大的图文理解与生成能力,而国产模型正凭借对中文场景的深度优化、独…...
永强数据恢复硬盘设备加密数据专业解锁恢复服务
在当今数字化时代,数据的重要性不言而喻。无论是个人用户存储的珍贵照片、视频,还是企业存储的关键商业数据,一旦丢失,都可能带来巨大的损失。而硬盘设备加密数据的丢失或无法解锁,更是让人头疼不已。北京永强数据恢复…...
半导体测试数据分析难题?STDF Viewer提供一站式专业解决方案
半导体测试数据分析难题?STDF Viewer提供一站式专业解决方案 【免费下载链接】STDF-Viewer A free GUI tool to visualize STDF (semiconductor Standard Test Data Format) data files. 项目地址: https://gitcode.com/gh_mirrors/st/STDF-Viewer 半导体测试…...
告别繁琐组态:用SVG + JavaScript 5分钟为你的工业设备创建可交互HMI组件
工业设备HMI组件开发革命:5分钟用SVGJavaScript打造智能交互界面 在工业自动化领域,人机界面(HMI)是连接设备与操作者的关键纽带。传统HMI开发往往陷入两个极端:要么使用笨重的组态软件进行繁琐配置,要么投入大量时间开发定制化界…...
开发上下文管理工具:原理、实现与工程实践
1. 项目概述:一个为开发者量身定制的上下文管理工具如果你和我一样,每天要在多个项目、多种技术栈、甚至多个开发环境之间反复横跳,那你一定对“上下文切换”这个词深恶痛绝。我说的不是操作系统的上下文切换,而是我们开发者大脑里…...
DLSS版本切换终极指南:掌控游戏性能优化的核心技术
DLSS版本切换终极指南:掌控游戏性能优化的核心技术 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 想要在《赛博朋克2077》中体验更流畅的光追效果?或是让《艾尔登法环》的画面表现更上一层楼&a…...
【2026年5月16日最新】别再用Cursor了!这5款AI编程神器让我效率暴涨300%
2026年5月,AI编程工具迎来了史诗级更新潮。OpenAI发布GPT-5.5后,代码理解和工程重构能力达到历史最强;字节跳动Trae凭借全链路AI原生IDE和免费无限制政策迅速崛起;DeepSeek V4更是用极致算法效率撕开了算力铁幕 。作为一名每天和代…...
基于MCP协议实现AI安全访问MongoDB:架构、部署与安全实践
1. 项目概述与核心价值最近在折腾AI应用开发,特别是想让大语言模型(LLM)能直接操作数据库,比如MongoDB。这听起来很酷,对吧?想象一下,你直接告诉AI助手“帮我查一下上个月销量最高的产品”&…...
从零部署openclaw:Docker Compose实战与避坑指南
1. 项目概述与核心价值最近在部署一个名为“openclaw”的开源项目时,我遇到了不少坑。这个项目在GitHub上的仓库是xujfcn/openclaw-deploy,从名字就能看出来,它是一个专注于部署的仓库,而不是主项目本身。我花了不少时间才搞清楚&…...
