当前位置: 首页 > article >正文

float认识

在IEEE 754浮点数标准中,有效数字位部分的组合涉及将整数部分和小数部分合并为一个规范的二进制小数。这个过程通常是在将十进制数转换为IEEE 754标准的二进制浮点数时进行的。以下是将整数部分和小数部分组合成有效数字位部分的详细步骤:

一、整数部分转换

  1. 十进制整数转二进制
    • 使用除2取余法,将十进制整数不断除以2,并记录每次的余数。
    • 将得到的余数从最后一位开始倒序排列,即可得到该整数的二进制表示。

二、小数部分转换

  1. 十进制小数转二进制
    • 将十进制小数乘以2,得到的结果的整数部分即为该位上的二进制数(0或1)。
    • 将小数部分继续乘以2,重复上述步骤,直到小数部分为0或达到所需的精度。
    • 将得到的二进制数正序排列(从小数点后开始),即可得到该小数的二进制表示。

三、合并整数和小数部分

  1. 规范化
    • 将整数部分和小数部分合并,形成一个二进制小数。
    • 为了符合IEEE 754标准,需要将这个二进制小数规范化为1.xxxxx的形式(其中x为二进制位)。这通常涉及将小数点向左或向右移动,并相应地调整指数。
  2. 计算指数
    • 根据小数点移动的位数,计算出实际的指数值。对于IEEE 754单精度浮点数,指数值需要加上偏置常数127(对于双精度浮点数,偏置常数为1023)。
  3. 组合成有效数字位
    • 在IEEE 754标准中,有效数字位(尾数)的首位总是1(对于规格化数),因此这个1可以省略不存。
    • 将规范化后的二进制小数(去掉首位的1)作为尾数部分。
    • 将符号位、指数部分(转换为二进制后)和尾数部分组合起来,即可得到IEEE 754标准的二进制浮点数表示。

示例

假设要将十进制数6.5转换为IEEE 754单精度浮点数:

  1. 整数部分:6的二进制表示为110。
  2. 小数部分
    • 0.5 × 2 = 1.0,取整数部分1。
    • 因此,0.375的二进制表示为0.1。
  3. 合并:整数部分和小数部分合并为110.1。
  4. 规范化:将小数点左移2位,得到1.1101 × 2^2。
  5. 计算指数:指数值为2,加上偏置常数129,得到131(二进制为10000001)。实际整数部分有2+1=3位。
  6. 组合成有效数字位:尾数部分为101(省略了首位的1),符号位为0(表示正数)。注意一定要省掉首位1.

因此,6.5的IEEE 754单精度浮点数表示为

0 10000001 10100000000000000000000

23.375的IEEE 754单精度浮点数表示为如下,可以自己去验证一下

0 10000011 01110110000000000000000

http://www.kler.cn/a/375403.html

相关文章:

  • 【JavaEE初阶 — 多线程】Thread类的属性
  • Linux之nfs服务器和dns服务器
  • 第八届御网杯线下赛Pwn方向题解
  • 项目_Linux_网络编程_私人云盘
  • 优化宝典:数据库性能提升指南
  • 字符串逆序(c语言)
  • redis的客户端
  • OpenCv —— 为opencv支持中文,将freetype2库编译进opencv中(附详细编译流程、测试代码)
  • T矩阵其实就是pauli基的乘,S矩阵中hv是体散射分量
  • vue3项目中el-tooltip实现内容溢出时再显示,并设置tip的最大宽度
  • 软件测试基础一(概述和核心内容)
  • 客户服务数据分析:洞察客户需求,优化服务策略
  • 软考:案例题分析1101
  • 数据结构之二叉树的收尾(性质)
  • leaflet绘制圆形方案
  • 软考(中级-软件设计师)数据库篇(1101)
  • opencv - py_imgproc - py_grabcut GrabCut 算法提取前景
  • ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板
  • 【机器学习】20. RNN - Recurrent Neural Networks 和 LSTM
  • 力扣题目解析--正则表达式匹配
  • 麒麟V10SP1部署postgresql+postgis+pgrouting
  • 从同样一个简单的计算问题,看星火4.0 Turbo模型推理逻辑能力
  • 小张求职记二:完善简历
  • 【CSS】——基础入门常见操作
  • 如何在 Ubuntu 16.04 上使用 UFW 设置防火墙
  • VsCode显示空格