IEEE754标准浮点数转换

2023-05-16

原文:https://blog.csdn.net/hqh131360239/article/details/81353582

IEEE754标准浮点数转换

IEEE754标准是一种浮点数表示标准,一般分为单、双精度两种,单精度是32位的二进制数,双精度是64位的二进制数,一个浮点数的组成分为三个部分。

  • ①第1位是数符s,s=1表示负数,s=0表示正数。
  • ②第2-9位为阶码E, (双精度为2-12位)
  • ③第10-32位为尾数M (双精度为13-64位)

转换大致过程如下:
首先将十进制数转为二进制数,用类似于科学计数法的形式表示成
num=(-1)^s (1+M) 2^(E-127)(单精度)
num=(-1)^s (1+M) 2^(E-1023)(双精度)
然后将每部分算出的数值按顺序排列
例如:
-0.0625=-0.0001=-1.0*2^(-4)
s=1,M=1-1=0,E=-4 +127=123=0111 1011 ,E(双精度)=-4 +1023=1019 =0111 1111 011
单精度:1011 1101 1000 0000 0000 0000 0000 0000 (S E M顺序)
双精度:1011 1111 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

浮点数转换二进制

举例:22.8125转二进制,这样计算:
整数和小数分别转换。
整数除以2,商继续除以2,得到0为止,将余数逆序排列。

22 / 2    11 余 0
11 / 2     5 余 1
5 / 2      2 余 1
2 / 2      1 余 0
1 / 2      0 余 1

所以22的二进制是10110
小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。

0.8125x2=1.625 取整1,小数部分是0.625
0.625x2=1.25 取整1,小数部分是0.25
0.25x2=0.5 取整0,小数部分是0.5
0.5x2=1.0 取整1,小数部分是0,结束

所以0.8125的二进制是0.1101
十进制22.8125等于二进制10110.1101
工具1: http://www.styb.cn/cms/ieee_754.php
工具2: http://www.speedfly.cn/tools/hexconvert/

思路

第一步求二进制,负数按照正数处理,不用考虑原反补,s代表正负(正负数转换后只是第一位不同)
第二步按照公式计算S、E、M,其中E是需要转换成二进制的,但是M并不需要不够的后面补0。
比如:22.8125等于二进制10110.1101
22.8125—>10110.1101–>1.01101101* 2^4
单精度:S=0,E=4+127=131(8位),M=0.01101101(23位)
ans=0 10000011 01101101000000000000000
双精度:S=0,E=4+1023=1027(10位) M=0.01101101 (53位)
ans=0 1000000011 01101101000000000000000000000000000000000000000000000

GPS坐标工具:https://www.sunearthtools.com/dp/tools/conversion.php?lang=cn#help_Format

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IEEE754标准浮点数转换 的相关文章

  • 浮点运算错误

    我使用以下函数来近似函数在某一点的导数 def prime x f x h if not f x h f x and not h 0 0 return f x h f x h else raise PrecisionError 作为一个测试
  • Java 中的 0.0 和 -0.0 (IEEE 754)

    Java 与 IEEE 754 完全兼容 对吗 但我对java如何决定浮点加法和减法的符号感到困惑 这是我的测试结果 double a 1 5 double b 0 0 double c 0 0 System out println b a
  • 将 C 字符串转换为双精度数或从双精度数转换时出现奇怪的行为

    我无法理解 C 的规则 即在打印双精度数或将字符串转换为双精度数时应采用何种精度 下面的程序应该可以说明我的观点 include
  • R 中浮点精度的极端数值

    有人可以解释一下以下输出吗 我知道它与浮点精度有关 但数量级 差异 1e308 令我惊讶 0 高精度 gt 1e 324 0 1 TRUE gt 1e 323 0 1 FALSE 1 非常不精确 gt 1 1e 16 1 1 FALSE g
  • 在 PHP 中将 64 位十六进制转换为浮点数

    我正在尝试将 64 位十六进制数转换为 PHP 中的浮点数 40F82C719999999A 如果我在 IEEE 754 浮点转换页面中运行它http babbage cs qc cuny edu IEEE 754 old 64bit ht
  • 为什么IEEE754单精度浮点数只有7位精度?

    为什么单精度浮点数具有 7 位精度 或双倍 15 16 位精度 谁能解释一下我们如何根据分配给 float Sign 32 Exponent 30 23 Fraction 22 0 的 32 位得出这一点 尾数的 23 个小数位 22 0
  • IEEE 浮点数是 std::map 和 std::set 的有效键类型吗?

    背景 关联容器 例如 std map 的键类型上的比较器的要求是它对键类型的元素施加严格的弱顺序 对于给定的比较器comp x y 我们定义equiv x y comp x y comp y x 要求comp x y 是一个严格的弱秩序 缺
  • 假设浮点数在 C 中使用 IEEE754 浮点数表示是否安全?

    浮点是在 C 中定义的实现 因此没有任何保证 我们的代码需要可移植 我们正在讨论是否可以在我们的协议中使用 IEEE754 浮点 出于性能原因 如果我们在发送或接收数据时不必在定点格式之间来回转换 那就太好了 虽然我知道平台和架构之间在大小
  • 如何减去 IEEE 754 数字?

    如何减去 IEEE 754 数字 例如 0 546875 32 875 gt 0 546875 是 IEEE 754 中的 0 01111110 10001100000000000000000 gt 32 875 在 IEEE 754 中是
  • 将浮点数转换为无符号整数,同时保留顺序

    我找到了很多关于 SO 的答案 专注于转换float to int 我只处理正浮点值 我一直在使用的一种简单方法是 unsigned int float2ui float arg0 float f arg0 unsigned int r u
  • 在 C++ 中使用不同的 IEEE 浮点舍入模式

    不幸的是我 我必须确保 GPU 和 CPU 上的浮点结果相同 好的 我知道 IEEE 很关心我 并提供了一个很好的标准来遵循 并提供了几个舍入选项 并且 CUDA 部分已整理 有不同舍入模式的内在函数 所以这只是动机 但是在主机端 C 代码
  • 哪些语言向开发人员公开 IEEE 754 陷阱?

    我想出于教育目的玩这些陷阱 数值微积分中默认行为的一个常见问题是我们 错过 了错误运算中出现的 Nan 或 inf 默认行为是通过计算进行传播 但某些操作 如比较 会破坏链条并释放 Nan 并且其余处理将继续 而不会在算法的先前步骤中确认奇
  • 浮点数在CPU内部是如何存储的?

    我是一名初学者 正在学习组装基础知识 现在 我在读这件事的时候 来到了这一段 它解释了浮点数如何存储在内存中 浮点数的指数是一个 8 位字段 允许大量或 要存储的小数 指数被解释为正数或 消极的 实际指数是 8 位字段的值减去 127 12
  • 将双精度常数定义为十六进制?

    我希望将 1 0 以下最接近的数字作为浮点数 通过阅读维基百科的文章IEEE 754 http en wikipedia org wiki IEEE 754 1985 Double precision 64 bit我设法发现 1 0 的二进
  • 计算机如何进行浮点运算?

    我看过很长的文章解释如何存储浮点数以及如何完成这些数字的算术运算 但请简要解释一下为什么当我写的时候 cout lt lt 1 0 3 0 lt
  • `std::sin` 最后一点是错误的

    为了提高效率 我正在将一些程序从 Matlab 移植到 C 两个程序的输出完全相同非常重要 我面临着此操作的不同结果 std sin 0 497418836818383950 0 477158760259608410 C sin 0 497
  • 当计算结果在 Linux 中产生非正规数时刷新为零

    我的 C 代码中的计算正在产生逐渐下溢 当发生这种情况时 程序将以 SIGFPE 终止 当计算产生逐渐下溢 非正常 时 如何将结果刷新为零 而不终止执行 我正在一台 redhat linux 机器上工作 谢谢 您还没有指定架构 我猜测它是一
  • IEEE-754 32 位(单精度)指数 -126 而不是 -127

    我知道我是否有这样的号码 1 1001 0001 0011 0011 0000 0001 0101 000 1 sign bit 8 bit biased exponent 23 bit fraction mantissa 我可以通过从有偏
  • 了解 C# 和 Java 中的 IEEE-754 64 位定点表示

    考虑以下 Java 代码 public class Program public static void main String args double number Double MAX VALUE String formattedNum
  • 将双精度数转换为十六进制 - 代码审查

    我有以下代码 它采用双精度值并将其转换为十六进制表示形式 反之亦然 我想知道它是否存在任何潜在的问题 我是否忽略了某些事情 double hex to double2 string hexString unsigned char byte

随机推荐

  • 写给夏燕第十一个男人

    悲哀 xff0c 李旧 xff09 是她第十一个男人 她想要什么呢 xff1f xff1f xff1f 很多男人吗 xff1f 很多是多少 xff1f 我是她第十个男人 xff0c 我原理她了 说自己以前走的路不可能回头了 xff0c 叫我
  • 美女登场

    不怕大家笑话 xff0c 我大学毕业时 xff0c 还是个处长 xff0c 所谓处长就是没有经过女人滋润的那种 xff0c 我想大家都知道我是什么意思的 其实 xff0c 上大学的时候我还是有些女人缘的 xff0c 毕竟在班上我的学习成绩还
  • 纠缠在回忆里的感伤

    一个身影从眼前晃过 xff0c 我本能的踩死了刹车 xff0c 车因为惯性向前使了一点后终于停了下来 xff0c 幸亏没有撞到那个骑车的老人 xff01 我尚惊魂未定 xff0c 额头冒出了冷汗 xff0c 好险 xff01 人在开车心却早
  • MySQL索引原理(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 什么是索引 xff1f 索引是帮助MySQL高效获取数据的数据结构 索引的本质就是数据
  • 最全最简单方法解决安装ROS的rosdep update超时错误

    最近利用虚拟机Ubuntu安装ROS xff0c 遇到了rosde update这一命令一直超时出错的问题 xff0c 在网上搜索很多资料 xff0c 终于解决 xff0c 所以总结一下解决方案 方法一 xff1a 手机开热点上网 不建议
  • c实现 udp通信

    1 创建对象 int udp socket 61 socket AF INET SOCK DGRAM 0 AF INET 网络通信协议 SOCK DGRAM 传输协议 属性默认 0 2 想接收信息就需要绑定地址信息 struct socka
  • 软件测试的生命周期及基本流程

    软件测试的基本流程 1 xff1a 需求分析 答 xff1a 仔细阅读需求文档 xff0c 理解需求文档 xff0c 主要是对业务的学习 xff0c 分析需求点 xff0c 参与需求评审会议 xff1b 2 xff1a 制定测试计划 答 x
  • 软件测试的分类有哪些?

    软件测试从整体来说分为开发阶段 测试单位阶段 测试技术阶段 开发阶段 xff1a 单元测试 集成测试 系统测试 验收测试 测试单位阶段 xff1a 内部测试 用户测试 第三方测试 测试技术阶段 xff1a 白盒测试 黑盒测试 灰盒测试 单元
  • 测试用例的八大设计方法

    从测试方法分为 xff1a 黑盒测试 等价类划分 边界值分析 因果图分析 错误测试 白盒测试 语句覆盖 判定覆盖 条件覆盖 判定 条件覆盖 多重条件覆盖 等价类划分 xff1a 答 xff1a 等价类划分是指某个输入域的子集合 xff0c
  • 软件测试中一个BUG的生命周期

    测试人员 发现BUG 提交BUG 指派前后端BUG 前后端开发确认BUG 不是BUG 关闭BUG 前后端开发修复BUG 回归验证BUG 二次开启BUG 是 关闭BUG BUG各种状态处理 答 xff1a 已指派 xff1a 测试人员已将BU
  • Fiddler抓取PC端微信小程序请求方法

    最近PC端的微信更新了 xff0c 在微信中也可以打开相对应的小程序了 xff0c 那么对于大多数测试同学来说要是可以在PC端打开小程序直接查看小程序发出的HTTPS请求报文 xff0c 那么定位问题也就太方便了吧 xff0c 我就是抱着这
  • 从Navicat切换到DBeaver的详细教程,一学即会。

    自从学会使用了Navicat xff0c 用一段时间发现Navicat有一些的问题缺陷 xff1a 1 需要购买花钱才能使用 xff0c 网上找的破解版也能使用 xff0c 但一些公司有版权限制 xff0c 又不能使用 xff1b 2 在连
  • VS code C/C++扩展包依赖cpptools-win32.vsix离线安装

    环境 xff1a 64位win10 xff0c VS code版本1 48 2 在visual studio code下自动安装C C 43 43 扩展包的依赖时 xff0c 可能会碰到如下异常和提示 xff1a 正在更新 C C 43 4
  • ROS错误:摄像头数据格式错误 wants topic /image/compressed to have datatype/md5sum

    ROS错误 摄像头数据格式错误 wants topic image compressed to have datatype md5sum 错误提示 xff1a ERROR 1260927377 348922000 Received erro
  • GMM-HMM声学模型实例详解(标贝科技)

    欢迎测试标贝科技AI开放平台 https ai data baker com source 61 qwer12 GMM HMM声学模型实例详解 GMM HMM为经典的声学模型 xff0c 基于深度神经网络的语音识别技术 xff0c 其实就是
  • C++学习笔记【六】—— 存储类

    Auto 声明变量时根据初始化表达式自动推断该变量的类型 声明函数时函数返回值的占位符 C 43 43 11已弃用 span class token keyword auto span f span class token operator
  • wget curl post请求

    wget header 61 User Agents Chrome header 61 Content Type Application json post data 61 url https zcool cloud resource te
  • 串口传输速率计算

    串口数据格式 起始位1bit xff0c 数据位8bit xff0c 停止位1bit xff0c 无校验 xff0c 无流控 xff1b 计算 波特率115200 bps xff1d 115200 位 秒 xff0c 没有校验位时 xff0
  • 位(bit), 字节(byte), 字(word),双字(dword or Qword)释义

    位 xff08 bit xff09 位 xff08 bit xff09 来自英文bit xff0c 音译为 比特 xff0c 表示二进制位 位是计算机内部数据储存的最小单位 xff0c 11010100是一个8位二进制数 一个二进制位只可以
  • IEEE754标准浮点数转换

    原文 xff1a https blog csdn net hqh131360239 article details 81353582 IEEE754标准浮点数转换 IEEE754标准是一种浮点数表示标准 xff0c 一般分为单 双精度两种