计算机内存中浮点数的表示

浅谈计算机内存浮点数表示 什么是浮点数提到浮点数相信大家一定不会很陌生,浮点数表示对形如V=x*(z^y)的有理数进行编码,它对执行涉及非常大的数字(|V|>>0)和非常接近于0的数字是非常有用的。浮点数内存中的存储废话不多述,直接进入正题,首先,我们来看看下面这段代码,大家可以自行在自己的编译器上运行一下:#include <stdio.h> int main() { float a = 0.0; flo 阅读详情

浮点概念的引入

在计算机系统的发展过程中,曾经提出过多种方法表达实数。比如定点数表示法, 这种表示方法将小数点的位置固定在某一个位置,比如: 11001000.00110001,这个16位(2字节) 的定点数用前面8位表示整数部分,后面8位表示小数部分,这种方法直观,但是固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。最终,绝大多数现代计算机遵循IEEE754,即IEEE二进制浮点数算数标准,利用科学计数法来表达实数,即用一个尾数(Mantissa or significand),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。比如 123.45 用十进制科学计数法可以表达为 1.2345 × 10^2 ,其中1.2345 为尾数,10 为基数,2为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。


浮点数在内存中的格式

IEEE 754标准定义了五种浮点数格式,使用基数和该格式占用的内存比特数命名,五种格式分别为:

  1. 二进制32位浮点数 (binary32)
  2. 二进制64位浮点数 (binary64)
  3. 二进制 128位浮点数(binary128)
  4. 十进制64位浮点数(decimal64)
  5. 十进制128位浮点数(decimal128)

各种编程语言和编译器一般都支持前两种格式,分别对应于float和double,对于后一种二进制高双精度128位浮点数,一般编译器使用80位表示,也有极个别的编译器将他们视为128位。

在IEEE标准中,浮点数在内存中的表示是将特定长度的连续字节的所有二进制位按特定长度划分为符号域,指数域和尾数域三个连续域。 例如,对于float类型的数据,其在内存中的表示为:

这里写图片描述

对于double类型,其表示形式如下:

这里写图片描述

从上面可以看出,float类型在内存中占用的位数为: 1+8+23=32bits

java 精度处理,在Java中处理四倍精度浮点数128 I need to make use of numbers coming from another system that are 128-bit (quadruple-precision) floating point numbers in java.Considering that there is no equivalent type in java, I would like to red... 阅读详情

相关推荐

在线IEEE浮点二进制计算器工具

在线IEEE浮点二进制计算器工具,支持binary16,binary32,binary64,binary128 在线IEEE浮点二进制计算器工具 这是一个小计算器,旨在帮助您了解用于浮点计算的IEEE 754标准。它是用JavaScript实现的,并且可以与Chrome和Firefox的最新桌面版本一起使用。我尚未在其他浏览器上进行过测试。如果您在左侧的三个框中之一中输入浮点数字,然后按Enter键,您将在右侧看到该数字的模式。您可以输入使用通常在编程语言接受的语法,比如数字42,2.345,12E-3

Linux,Java,SpringBoot,Python,Lua略知一点 7607

python float 精度_numpy.float128的内部精度是多少?

numpy.longdouble指的是C编译器调用的任何类型long double。当前,这是numpy支持的唯一扩展精度浮点类型。在x86-32和x86-64上,这是一种80浮点类型。在更特殊的系统上,可能还有别的东西(在Sparc上的IIRC是实际的128IEEE浮点数,在PPC上是double-double)。(这也可能取决于您所使用的操作系统和编译器,例如Windows上的MSVC根本...

weixin_39904268的博客 2616

GCC对四精度浮点型的支持

C语言标准中只提供了float型和double 型两种浮点类型。但是有些情况下,我们需要比double 型更大数据范围或更多的有效数,为此,GCC 为我们提供了__float128型浮点类型。这种扩展类型可以表示的数据范围非常大,大约为-10e4932到10e4932,可以表示的最接近0的数大约为3.36*e-4932,可以表示的10进制有效大约为33。比起double 类型,无论是数据范围

Ivan 的专栏 1万+

浮点数的标准IEEE745

学习

进阶的小宋 3036

浮点数计算机内存中的表示

声明: 本文转载自:阮一峰的博客,http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html 张玉彬的博客 http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html 1. 前几天,我在读一本C语言教材

小小码农 2164

计算机数值存储原理:整数与浮点数内存表示

计算机数值存储是编程基础中的核心概念,涉及底层数据表示与处理机制。整数采用补码存储实现高效精确运算,而浮点数遵循IEEE 754标准兼顾范围与精度。理解这两种存储方式的差异对避免溢出错误、精度丢失等常见问题至关重要。在工程实践中,数值存储原理直接影响内存优化、跨平台数据交互以及科学计算等场景。通过分析补码的算术优势与IEEE 754的域结构,开发者能更好地处理字节序转换、特殊值判断等典型问题。掌握这些基础知识对编写健壮的数值计算程序具有重要价值,特别是在金融系统、游戏开发等对数据精度敏感的领域。

weixin_33978044的博客 531

整数在内存中的表示方法以及计算机加减法 && 浮点数表示方法_incomplete

有些东西我都是嫌麻烦,上课没认真看,结果实际用到又要到处找。实际这是最最基础的东西了,可以我看了之后,下次要用,又忘了。这次记录一下。

SSS 573

【转载】浮点数的二进制表示

测试程序 前几天,我在读一本C语言教材,有一道例题: #include <stdio.h>   void main(void){     int num=9; /* num是整型变量,设为9 */     float* pFloat=&num; /* pFloat表示num的内存地址,但是设为浮点数 */     printf("num的值为:%d\n",num); /* 显示num的整型值 */     printf("*pFloat的值为:%f\n",*pFloat)

奋进的小白粥 1284

浮点数内存中的存储

浮点数内存表示

Chengzi_comm的专栏 731

超级详细!!浮点数计算机内部的存储与运用

(因为为二进制所以M不可能等于2,然后又因为化为科学计数法,所以小数点前移后M只能为这个范围),也就是说,M可以写成 1.xxxxxx 的形式,其中xxxxxx表示小数部分。,只保存后面的xxxxxx部分。对于64浮点数,最高的1是符号S,接着的11是指数E,剩下的52为有效数字M。对于32浮点数,最高的1是符号s,接着的8是指数E,剩下的23为有效数字M.(单精度浮点数存储)比如,2^10的E是10,所以保存成32浮点数时,必须保存成10+127=137,即10001001。

m0_74774759的博客 418

浮点数计算机中是如何表示的?

转载 作者: java架构进阶 链接: https://www.jianshu.com/p/35994159bd7b 来源: 简书 前几天,面试的时候遇到一道C语言题: #include <stdio.h> void main(void) { int num=9; /* num是整型变量,设为9 */ float* pFloat=&num; /* pFloat表示num的内存地址,但是设为浮点数 */ printf("num的值为:%d\n",num); /* 显示num的整

讨厌水的鱼 1889

c++浮点数的二进制表示

前几天,我在读一本C语言教材,有一道例题:摘自红黑联盟(www.2cto.com) 原文:http://www.2cto.com/kf/201106/94135.html  #include   void main(void){  int num=9; /* num是整型变量,设为9 */  float* pFloat=&num; /* pFloat表示num的内存地址,但是设

知行知的专栏 5095

[计算机基础]浮点数计算机中的表示

计算机中,一切数据都是以二进制的形式进行表示,小数也不例外。 但是像1011.0011这样带小数点的表现形式,完全是纸面上的二进制数表现形式,在计算机内部是无法直接使用的,且计算机若采用定点数的形式来表示小数的话,则限制了其表示范围以及空间分配的不合理; 那么如何更加有效地描述小数呢?

如梦如幻的博客 1万+

浮点数的二进制表示

 转自:http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html 1. 前几天,我在读一本C语言教材,有一道例题:   #include   void main(void){     int num=9; /* num是整型变量,设为9 */     fl

zhangyandong16的专栏 969

浮点数计算机中是如何表示

  前言 相比int等整型,float等浮点类型的表示和存储较为复杂,但它又是一个无法回避的话题,那么就有必要对浮点一探究竟了。在计算机中,一般用IEEE浮点近似表示任意一个实数,那么它实际上又是如何表示的呢? 下面的表达式里,i的值是多少,为什么?如果你不确定答案,那么你应该好好看看本文。 float f = 8.25f; int i = *(int*)&amp;f; IEEE浮点...

守望的博客-编程珠玑 1342

浮点数计算机中的表示方法

转载自:https://www.cnblogs.com/silentNight/p/5274714.html 一个哥们在qq群里问了一个关于浮点数的程序,然后行了行浮点数的知识.竟然忘了,所有找了些文章.回忆回忆,理解理解 首先来聊天他的问题和让我无言以对的解决办法吧 "“十六进制转负数浮点数怎么转换啊” 然后我默默的写了一个下面的东东 #include "stdafx.h" #include &...

edward_zcl的博客 1万+

整数与浮点数内存中的存储方式

整数雨浮点数内存中的储存方式

Tokai___Teio的博客 294
上一篇: 关于多媒体编解码器和音视频格式
下一篇: http1.1简要介绍
小马识图
博客等级 码龄18年 8粉丝 30原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值