热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言学习第四天数据的存储

一、目录:1、数据类型详细介绍2、整型在内存中的存储3、大小端字节序介绍及判断4、浮点型在内存中的存储解析二、详解:1、数据类型详细介绍数据类型决定了使用这个类型开辟内存空间的大小



一、目录:
1、数据类型详细介绍
2、整型在内存中的存储
3、大小端字节序介绍及判断
4、浮点型在内存中的存储解析

二、详解:
1、数据类型详细介绍
数据类型决定了使用这个类型开辟内存空间的大小、和看待内存空间的视角。
C语言数据类型有两大类:内置类型、自定义类型1.1 内置类型
1.1.1整型家族


char
short
int
long
每个类型有signed有符号和unsigned无符号两种类型。


1.1.2浮点型家族


float单精度
double双精度


1.1.3指针类型
在这里插入图片描述
1.1.4空类型void
在这里插入图片描述
1.2 自定义类型(构造类型)


数组类型
结构体类型struct
枚举类型enum
联合类型union


2、整型在内存中的存储
存的是二进制的补码,存的地址由低到高。

3、大小端字节序介绍及判断
大端(存储)模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。
小端(存储)模式:低位—低地址,高位—高地址。
判断:
在这里插入图片描述
程序完善:
在这里插入图片描述
4、浮点型在内存中的存储解析
我们先来分析如下图中的程序:
第一个值打印的就是整型9;
第二个值,&n是整型,将它强制转换成float型,存储和取的类型不一样;
第三个值,浮点型的数放进去,以整型的形式取出,出错;
第四个值,存取都是float类型,打印正确。
在这里插入图片描述
4.1浮点型在内存中的存放:
根据国际标准IEEE754,任意一个二进制浮点数v可以表示成下面的形式:
(-1)S*M*2E;
(-1)^S表示符号位,当S=0,v为正数;当S=1,v为负数;
M表示有效数字,大于等于1,小于2·2^E表示指数位

Eg:
浮点数9.0
二进制1001.0表示 (-1)0*1.001*23
S = 0,M = 1.001,E = 3,所以在内存中只需要存储S、M、E这三个值就可以表示一个浮点数了。

1

E为一个无符号整数,单科学计数法中的E是可以为负数的,所以IEEE754规定,存入内存时,E的真实值必须在加上一个中间数,对于8位的E,这个数是127,对于11位的数,这个数是1023,比如2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。
下面举一个存单精度浮点型5.5的例子:
它在内存中所存的二进制序列(32位)如图所示,推导过程如图。
在这里插入图片描述
4.2浮点型从内存中取出:
*E既不全为0,也不全为1
此时指数E的值为计算值减去127或1023,得到真实值,再将有效数字M前加上第一位的1;
*E全为0
这时,浮点数的指数E等于1 - 127或1 - 1023,得到真实值,有效数字M不再加上第一位的1,而是还原为0.xxxxxxxx的小数,这样做是为了表示±0,以及接近于0的很小的数字;
*E全为1这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位S)。



推荐阅读
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
author-avatar
陈晏亚363951
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有