转至:https://blog..net/tqs_1220/article/details/73550899

首先看float和double在内存中是怎么存储的?

float:符号位(1位)+指数位(8位)+尾数位(23位)

范围:-2^-128 ~2^127  (-3.40E-38~3.40E+38)

double:符号位(1位)+指数位(11位)+尾数尾(52位)

范围:-2^-1024~2^1023(-1.79E-308~1.79E+308)

在计算机中整数的存储是大多数人能够轻易理解得,比如在数据宽度为1个字节时,如果整数表示无符号数时就是0--15.如果整数用作有符号数时:0000--01111代表十进制的0--7。而1000--1111表示从(-8)--(-1)。然而计算机存储数据的方式都是一样的,并没有区分有符号和无符号,是我们使用数据的人来确定它到底是有符号还是无符号。而有符号数据一般使用在 数据比较、数据运算等等,其他方面差别并不是很大。

整数十分好理解,但是小数的存储就让人感到困难多了,很多不懂IEEE规则。我们不需要懂它的规则,我们只需要记住存储的方法,这样以后看到小数就能轻易地知道它在内存中是如何存储的了。具体分为下面几步:

1、知道如何将十进制的整数部分和小数部分化成二进制。

整数就是不断除2得到余数,例:8的二进制可进行这样计算:

8/2=4余数为0

4/2=2余数为0

2/2=1余数为0

1/2=0余数为1

整数从下向上看,所以8的二进制数就是1000。

小数对应的就是乘,例0.25的二进制可进行这样计算:

0.25*2=0.5整数部分为0

0.5*2=1.0 整数部分为1

当小数部分为0时结束运算,像有些数据会一直进行这种运算例如0.4永远无法将小数部分化为0,所以就有了精度的概念。

小数从上到下看,所以0.25的二进制数就是01。

2、知道小数的存储是32位数据的,其中位31是符号位;位30--位23表示指数部分;位22--位0表示尾数(下面会介绍)部分。

3、不管数据的正负,先按照它的绝对值将它表示为二进制形式,注意整数和小数部分用小数点分开。例如:8.25可表示的二进制形式为1000.01。

4、将8.25的二进制形式化为科学计数法形式:1.00001*2^3,其中左移指数为正,右移指数为负。

5、开始存数:

符号位              指数部分(8位)                    尾数部分(23位)

0                        00000000                00000000000000000000000

尾数部分:即化为科学计数法后的小数部分,如1.00001*2^3它的尾数部分就是00001,因为在化为二进制时是从高到低看下来的,所以在尾数部分存数时就是从高到低,8.25的尾数部分就是00001000000000000000000。

指数部分:指数部分的最高位存的是左移还是右移。左移为1,右移为0。同时将指数减一放到指数部分(指数部分最高位除外),1.00001*2^3的指数部分就是10000010。

符号部分:8.25为正数,存的是0。

所以8.25在计算机中的的数据存储就是01000001000001000000000000000000

0100 0001 0000 0100 0000 0000 0000 0000===41040000

下面讲讲不带整数的小数是如何存储数据的。

除开指数部分存储以外,其他步骤完全一样。我们举例说明:0.25

0.25的二进制形式为0.01,它化为科学计数法需要右移两位,即1.0*2^-2。

尾数部分全0。

指数部分最高位为0(右移)。

(-2)-1=-3=FD=11111101,去除最高位,将FD低七位和指数部分最高位合在一起,即0111 1101。

0.25的32位数据即:0011 1110 1000 0000 0000 0000 0000 0000==3E800000

c语言中小数在内存中的存储,c语言中小数在内存中的存储相关推荐

  1. c语言%f小数位第六位是错的,c语言中输出浮点型数据,如果不指定输出位数,%f输出几位小数?...

    %f :以浮点型数据形式输出,浮点型也就是实数.一共保留6位小数,%f表示实数,保留6位小数,输出float类型的值,小数位数不固定,只是有效位数是7位,输出格式也不一定,不同编译器不一样,比如很多编 ...

  2. c语言静态存储和动态存储,C语言中的静态内存与动态内存

    我们知道,内存分为动态内存和静态内存,我们先讲静态内存. 一.静态内存 内存管理---存储模型 存储模型决定了一个变量的内存分配方式和访问特性,在C语言中主要有三个维度来决定:1.存储时期 2.作用域 ...

  3. 【C语言进阶深度学习记录】三十三 C语言中动态内存分配

    如何在程序运行的时候动态给程序分配内存? 文章目录 1 动态内存分配的意义 1.1 C语言中如何动态申请内存空间 1.2 malloc和free的用法 1.3 calloc与realloc 1.31 ...

  4. C语言中打印结果如何保留两位、三位小数以及整数?

    首先我们要保证我们输入是double类型的数据 第二步当然是打印a,我们要知道打印double类型的数据打印时需要使用占位符%f. (在输入数据时用%lf) 那么打印保留两位数,我们应该怎么做呢? % ...

  5. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

    文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...

  6. 字符串在内存中的存储——C语言进阶

    字符串是以ASCII字符NUL结尾的字符序列. ASCII字符NUL表示为\0.字符串通常存储在数组或者从堆上分配的内存中.只是,并不是全部的字符数组都是字符串,字符数组可能没有NUL字符. 字符数组 ...

  7. java语言中 说明或声明数组时内存大小,说明或声明数组时不分配内存大小,创建数组时分配内存大小。...

    试井过程中每一实测的压力.说明产量都不随时间变化的叫(). 或声学制具体规定着() 明数义务教育的主要特点() 组时组<中华人民共和国义务教育法>是哪一年颁布的?() 现代社会的迅速变化, ...

  8. 在C语言的函数定义中 如果不需要返回结果,在C语言的函数定义中,如果不需要返回结果,就可以省略return语句...

    语言义中语句 数定省略保险般来能一几项的职以下说有. 来源统计济数据的主要调查得社会经是获,需要包括如下容(的内应该. 具体是指,结果积反映房空置面商品,而尚未出屋期末报告工可供销的房出租出租已竣是指 ...

  9. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

  10. c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc

    C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...

最新文章

  1. 数据库连接池连接异常com.alibaba.druid.pool.GetConnectionTimeoutException
  2. 走近人脸检测:从VJ到深度学习(下)
  3. BeautifulSoup操作xml文件
  4. 关于java和c语言中,变量重名问题
  5. 以智能数据架构,挖掘增长金矿
  6. 服务容错、限流、资源隔离、熔断、监控…3天,撸完了!
  7. 字符串换行截取_textwrap 文本自动换行与填充
  8. leetcode1162. 地图分析(bfs)
  9. SecureCRT 颜色
  10. web项目移动端在线预览(excel在线预览)
  11. 基于Java+SpringMvc+vue+element实现博物馆平台系统
  12. 凭借这份diao炸天的资料,狂刷三遍成功从外包进入了字节跳动!
  13. 小学美术计算机教案模板,小学美术教案模板五篇
  14. 数学分析-换底公式证明
  15. 2022年5月网络教育大学英语B统考题库复习题及考试时间
  16. 华硕z170-p+英特尔i7-6700k+16GB黑苹果EFI引导文件
  17. css画钟表_利用css+原生js制作简单的钟表
  18. AutoCAD按坐标打印图纸
  19. WordPress主题柒比贰v2.9.8 完美无限制版
  20. Hilberling电源维修罗芬Rofin激光电源控制器维修HG-101A

热门文章

  1. 飞鸽_飞鸽2007_飞鸽传书_飞鸽传书2007
  2. 读他:男人最怕听的十句话
  3. Boss黑话,老板看完都笑了!
  4. HTML5新特征、窍门和技术(6~10)
  5. 关于编程学习的一些思考
  6. 花器官身份基因与靶基因间的调控进化情况
  7. Volcano plot | 别再问我这为什么是火山图
  8. 如何修复Mac清倒废纸篓提示“操作无法完成,因为该项目正在使用中”
  9. MacOSX系统怎么开启Root账户?Mac电脑开启root权限教程
  10. python进程数据共享_python程序中的进程操作-进程间的数据共享