CMU15-213 课程笔记 04-Floating Point

文章目录

    • 浮点数如何用二进制表示
    • IEEE 浮点数标准
    • IEEE 浮点数实现
      • IEEE 浮点数在内存里
    • E = exp - bias 计算指数
    • M = 1.xxx 尾数计算
    • 举例:对一个浮点数进行转换
    • 一些关于浮点数的计算等等

浮点数如何用二进制表示

计算机内部的浮点数不是这样存在内存里的(至少C语言不是)但我们可以这样使用二进制来表示浮点数:
在这里插入图片描述

这样的表示方法有很大的局限,我们只能方便地表示 1/21/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 这个十进制数,存到内存这个二进制结构里了~
在这里插入图片描述

一些关于浮点数的计算等等

后续关于浮点数在计算机里应用的细节内容可能会补上,暂时跳过,请看原视频~

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

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

相关文章

【RabbitMQ实战】05 RabbitMQ后台管理

一、多租户与权限 1.1 vhost的概念 每一个 RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(virtual host),简称为 vhost。每一个 vhost本质上是一个独立的小型RabbitMQ服务器,拥有自己独立的队列、交换器及绑定关系等,并且它拥…

知识储备--基础算法篇-贪心算法

1.贪心算法 1.1贪心算法与背包问题的区别 贪心算法能够通过局部最优去推出全局最优,而背包问题不行,需要用动态规划的方法来解决。 1.2套路 贪心算法没有套路!! 主要想清楚怎么得到该阶段的局部最优解,如何通过局…

spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程

概述 需求是想在线程池执行任务的时候,在开始前将调用线程的信息传到子线程中,在子线程完成后,再清除传入的数据。 下面使用了spring的ThreadPoolTaskExecutor来实现这个需求. ThreadPoolTaskExecutor 在jdk中使用的是ThreadPoolExecutor…

前端web常用的基础案例

html案例&#xff1a; <!DOCTYPE html> <html> <head><title>My Website</title> </head> <body><header><h1>Welcome to My Website</h1><nav><ul><li><a href"#">Home</a…

阿里云效自动构建python自动测试脚本

之前一直用的是jenkins自动构建自动化脚本&#xff0c;因为现在的公司统一在阿里云效的流水线上做代码的管理&#xff0c;构建&#xff0c;要求自动化测试也在上面自动构建&#xff0c;故而学习了一下。为自己做一个记录&#xff0c;也给有需要的朋友做一个参考。 1. 新建流水…

Mysql备份恢复、与日志管理

Mysql日志管理、备份与恢复 一、Mysql日志管理1.1、日志分类1.1.1、错误日志1.1.2 、通用查询日志1.1.3、 二进制日志1.1.4 、慢查询日志1.1.5 、配置日志 1.2、日志的查询 二、备份与恢复2.1、 数据备份的必要性2.2 、造成数据丢失的原因2.3、 数据库备份的分类2.3.1、 物理备…

python 正则表达式

一、特殊字符-需要转义 eg&#xff1a;转义符&#xff1a; 待匹配的字符串&#xff1a;lr的值&#xff0c;及下图中字符串lr[和字符串&#xff0c;之间的数据 正则写法&#xff1a; learning_rate re.findall(".*lr\[(.*?), *", content) 处理结果&#xff1a;…

OpenCV实现模板匹配和霍夫线检测,霍夫圆检测

一&#xff0c;模板匹配 1.1代码实现 import cv2 as cv import numpy as np import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [SimHei]#图像和模板的读取 img cv.imread("cat.png") template cv.imread(r"E:\All_in\o…

Learn Prompt- Midjourney Prompt:Prompt 提示语

基础结构​ 一个基本的提示可以简单到一个单词、短语或表情符号。非常短的提示将在很大程度上依赖于 Midjourney 的默认样式。 完整 prompt&#xff1a;可以包括一个或多个图像链接、多个文本短语或单词&#xff0c;以及一个或多个后缀参数 Image Prompts: 可以将图像 URL 添加…

github代码提交过程详细介绍

1、下载github上面的代码 &#xff08;1&#xff09;在github网站上&#xff0c;找到想要下载的代码仓库界面&#xff0c;点击Code选项就可以看到仓库的git下载地址&#xff1b; &#xff08;2&#xff09;使用命令下载&#xff1a;git clone 地址&#xff1b; 2、配置本地git…

中国制造让苹果跪服,将再增加一家中国高科技供应商

日前产业链人士指出由于京东方的OLED面板有力地制衡韩国面板厂商三星和LGD&#xff0c;促使他们降价&#xff0c;而且技术也不错&#xff0c;因此正计划再引入一家中国OLED面板厂商&#xff0c;以进一步促进OLED面板的竞争。 早期苹果的OLED面板完全由三星供应&#xff0c;由此…

什么是AI问答机器人?它的应用场景有哪些?

近年来&#xff0c;由于技术的进步和对个性化客户体验的需求不断增长&#xff0c;AI问答机器人也是获得了巨大的关注。AI问答机器人&#xff0c;也被称为AI聊天机器人&#xff0c;是一种旨在模拟人类对话并通过基于文本或语音的界面与用户交互的计算机程序。其能够自动执行各种…

Java-day17(反射)

Reflection(反射) 动态语言的关键 允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法提供的功能: 在运行时判断任意一个对象所属类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在…

分享从零开始学习网络设备配置--任务3.7 使用动态路由RIPv2实现网络连通

任务描述 某公司随着规模的不断扩大&#xff0c;路由器的数量开始有所增加。网络管理员发现原有的静态路由已经不适合现在的公司&#xff0c;实施动态路由RIPv2协议配置&#xff0c;实现网络中所有主机之间互相通信。 在路由器较多的网络环境中&#xff0c;手工配置静态路由…

回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于RF-Adaboost随机森林结合…

云安全之访问控制介绍

访问控制技术背景 信息系统自身的复杂性、网络的广泛可接入性等因素&#xff0c;系统面临日益增多的安全威胁&#xff0c;安全问题日益突出&#xff0c;其中一个重要的问题是如何有效地保护系统的资源不被窃取和破坏。 访问控制技术内容包括访问控制策略、访问控制模型、访问…

力扣26:删除有序数组中的重复项

26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 …

混合Rollup:探秘 Metis、Fraxchain、Aztec、Miden和Ola

1. 引言 混合Rollup为新的以太坊L2扩容方案&#xff0c;其分为2大类&#xff1a; 将乐观与ZK技术结合的混合Rollup同时支持公开智能合约 和 私人智能合约 的混合Rollup 本文将重点关注Metis、Fraxchain、Aztec、Miden和Ola这五大项目。 2. 何为混合Rollup&#xff1f; 混合…

el-table实现穿梭功能

第一种 <template><el-row :gutter"20"><el-col :span"10"><!-- 搜索 --><div class"search-bg"><YcSearchInput title"手机号" v-model"search.phone" /><div class"search-s…

Spring面试题21:说一说Spring的@Required注解和@Qualifier注解

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说Spring的@Required注解 @Required ,用于标记在注入的属性上。它表示被注解的属性在配置 Bean 的时候是必需的,如果没有正确配置,则会抛出…