C语言学习之浮点型数据

浮点数

浮点型数据分为单精度浮点型(float)和双精度浮点型(double).

单精度(float)

单精度浮点值

取值范围:1.2E-38 到 3.4E+38

精度:6 位小数

单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。

上述图片是计算机将float型数据存储的形式描述。

双精度浮点值

取值范围:2.3E-308 到 1.7E+308

精度: 15 位小数

双精度是1位符号,11位指数,52位小数。

上述图片是计算机将float型数据存储的形式描述。

具体的存储原理以单精度浮点数为例

二进制的存储形式,

首位是符号位,0代表正数,1代表负数。

23~30位为指数位,

0~22位为小数位

下面关于指数位进行详细介绍

指数位也称为阶码。

阶码:在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码。

阶码位数越多,可表示的数的范围越大;尾数越多,所表示的数的精度越高。

以3.375为例,3的二进制为011,0.375的二进制为011,那么3.375的二进制可以写成11.011,用科学计数法的形式写,就是1.1011x10,即 指数位是1;同理 120.25的二进制形式为1111000.01,用科学计数法的形式写就是1.11100001x10^(+6),即指数位是+6,在指数位有+6,那么就有-6,又因为指数位一个有8位,范围是-127~128,

为了消除负数对指数的影响,就增加了一个偏移量的概念,在float中偏移量为127,这样就是所有的数均大于等于0了,那么偏移后,指数的范围是0~255.

例如 1+127=128,其转化为二进制形式为10000000

6+127=133,其转化为二进制形式为10000101

那么最终上述的两个例子在计算机中的存储结果为

1 10000000 10110000000000000000000 -----3.375

1 10000101 11100001000000000000000 ------120.25

细心观察的话就发现,科学技术法表示的整数位上的1 并未写入上述的存储结果之中,这是因为1肯定始终确定的,那么就省略了,这样做相当于省了1bite空间表示,可以认为是提高了精确度。

下面是将十进制数转化为二进制数的程序

//将十进制小数分别求其整数的二进制、小数的二进制,并分别输出

#include

#include

int fun(int n)

{

if (n){

fun(n / 2);

printf("%d", n & 1);

}

if (n==0)

printf("%d", n & 1);

}

int fun1(float f)

{

int flat = 1;

int number = 0;

while (flat)

{

int num;//用来存储f的整数部分

f = f * 2;

num = (int)f;

f = f - num;

printf("%d", num);

number++;

if (f == 0)

flat = 0;

}

}

int main()

{

float ff = 120.25;//以一个实际小数为例

int Num;

if (ff > 1)

{

Num = (int)ff;//求小数的整数部分

ff = ff - Num;//求小数的小数部分

}

else

{

Num = 0;

}

fun(Num);

printf("\n");

fun1(ff);

printf("\n");

}

将十进制小数部分转化为二进制的基本原理的C语言核心代码

int fun1(float f)

{

int flat = 1;

int number = 0;

while (flat)

{

int num;//用来存储f的整数部分

f = f * 2;

num = (int)f;

f = f - num;

printf("%d", num);

number++;

if (f == 0)

flat = 0;

}

}

关于double型数据的存储过程本质上类似,但是由于其存储大小为8个字节,因此其指数位的偏移量是1023,除此之外,没什么不同,当然了,0也比较多。

除了float double型数据,还有long double 型数据,其存储大小为16字节,取值范围为3.4E-4932 到 1.1E+4932,精度为19 位小数。

本篇博客参考了一下一篇文档

C语言浮点数存储方式(其中含有较多的图片,更利于理解吧)

c语言 浮点型数据怎么存放,C语言学习之浮点型数据存储相关推荐

  1. c语言整型如何存放,C语言的数据类型→整型数据

    整型数据 一.整型常量的表示方法:"整型常量"即"整常数". 在C语言中,整常数有三种形式表示: 十进制整数: 如:123.-456.4. 八进制整数,以0开头 ...

  2. c语言文件可用代码存放,C语言 文件(示例代码)

    小白一个,看到有错误,希望指出,万分感谢 /**************************************************************** C语言文件概述: 一般文件 ...

  3. c语言指针的地址存放,c语言 - *指针 和 地址

    最近在研究oc的底层,全是c/c++的代码,虽然以前学过也写过,其实不怎么用都忘得差不多了. 首先我们来了解一下 * 和 &这两个符号 通俗点儿理解其实&地址就是就是一个存放地址的变量 ...

  4. c语言一维数组如何存放,C语言一维数组教案

    <C语言一维数组教案>由会员分享,可在线阅读,更多相关<C语言一维数组教案(6页珍藏版)>请在人人文库网上搜索. 1.学 科:计算机科学与技术课 程:C语言程序设计课 题:一维 ...

  5. python有什么库可以 从fig文件中读取数据_Python之matplotlib库学习:实现数据可视化...

    1. 安装和文档 pip install matplotlib 为了方便显示图像,还使用了ipython qtconsole方便显示.具体怎么弄网上搜一下就很多教程了. pyplot模块是提供操作ma ...

  6. C语言第一个字节地址,C语言字节对齐详解

    #pragma pack () /*取消指定对齐,恢复缺省对齐*/本文引用地址:http://www.eepw.com.cn/article/148849.htm sizeof(struct D)值为 ...

  7. [C++基础]017_数据的存放

    学习写程序,就不能不对程序的数据存放有一定的了解.可能你常常听说栈啊.堆啊什么的,下面咱们看看数据的存放有哪几个位置. ①.栈区 存储[函数参数]以及[局部变量],由编译器自动分配和释放 ②.堆区 存 ...

  8. 量化学习:大数据时代的学习方式

    摘 要:未来人工智能.大数据.学习分析等技术被广泛应用于教育教学中,量化学习将成为新的研究热点.本研究首先对量化学习的内涵.特征.工具和方法进行概述,然后阐述了量化学习的价值意义和应用案例,进而分析了 ...

  9. 大数据在高校的应用场景_大数据在高校教育信息化的应用

    [摘要]随着我国经济的发展,科学技术的迅猛提高,信息技术已经逐渐融入到社会的每一个角落,21世纪开始步入信息化时代.随着信息技术的渗透,作为社会生活的重要阵地,高校自然也不会置身事外,信息技术在高校教 ...

最新文章

  1. G面经prepare: Pattern Match
  2. PyQt 5布局管理
  3. 期初付年金(annuity-due)
  4. c语言兔子繁殖问题分析和递归方程,经典的兔子生兔子问题(C#递归解法)
  5. gridview排序加箭头(二)
  6. python 2.7中urllib 2 与python 3.5中 urllib的区别。
  7. 一、RequireHttps
  8. 图像语义分割(2)-DeepLabV1: 使用深度卷积网络和全连接条件随机场进行图像语义分割
  9. 网页浏览器主要通过ftp协议同网页服务器,FTP协议的工具、网页浏览器和命令
  10. 基于umijs+lerna+qiankun的微前端实现
  11. 第十二章 项目采购管理第六版
  12. 第一次接触APK【破解纪实】
  13. 监控系统的基本架构(Metric monitoring)
  14. nyistOJ-See LCS again(二分)
  15. widget是什么意思?
  16. android实现b站弹幕,Android弹幕实现:基于B站弹幕开源系统(2)
  17. 数的进制转换(任意两个进制之间的转换)
  18. CC26x2R1笔记(11)蓝牙丢包问题(GATT_WriteNoRsp发送返回0x16:blePending)
  19. 电销越来越难做,外呼系统怎么帮助涨业绩
  20. 【STM32F103】PB3和PB4不能按照设置输出相应的电平问题

热门文章

  1. 推荐11个构建和测试API的顶级工具
  2. oracle正则判断身份证号,Oracle中查询使用正则表达式函数REGEXP
  3. java 参数 exception_java – 在异常的参数中使用泛型
  4. matlab对比度锐化,对比度、清晰度与锐化的理解
  5. chemdraw怎么画拐弯的箭头_性感皮衣皮裤的质感服装该怎么画?
  6. 为什么request的页面与原页面不同_如何在不同页面上使用不同的Joomla CSS
  7. insightface mxnet训练 旧版
  8. pycharm自定义格式化
  9. scrapy安装出错
  10. eccv2020 目标检测笔记