C语言数据的存储

一、前言

C语言中数据类型可以分成两大类:
1.内置类型(C语言本身就具有的类型)
2.自定义类型(构造类型)

二、了解各个类型

I.内置类型:

1.整型家族2.浮点型家族3.指针类型4.空类型
补充: 空类型中void表示空类型(无类型)

II.构造类型:

数组类型 >例如:int arr[10]=0;数据类型是int [10]
结构体类型>关键字struct
枚举类型>关键字enum
联合类型>关键字union

三、整型在内存中存储

在这里插入图片描述
在内存中存储的是,我们数字二进制补码的16进制形式
补充: 在计算机系统中,数值一律用补码来存储和表示。原因就是我们使用补码可以将符号位和数值域统一处理;同时,加法减法也可以统一处理(CPU只有加法器),此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路
大小端介绍
大端:大端字节序存储模式
小端:小端字节序存储模式
大端存储模式:是指数据的低位保存在内存高地址中,而数据高位保存在内存的低地址
小端存储模式:是指数据的低位保存在内存低地址中,而数据高位保存在内存的高地址
在这里插入图片描述

四、字符类型储存的数据

在这里插入图片描述
特别注意:
10000000—>-128这个其实是规定
或者我们可以这样理解
110000000原码
1011111111反码
110000000补码----只留下后面8位
在这里插入图片描述
补充
我们要查询整型家族数据的取值范围:在编译器安装包里查看文件limits.h
我们要查询浮点型家族数据的取值范围:在编译器安装包里查看文件float.h

五、浮点型数据存储

补充: 1E10表示1.0*10^10

在这里插入图片描述

进入正题

例如:9.0
我们将其存入内存我们将其分成两个部分,一个部分是小数点前面的部分,另一部分是小数点后面的部分用二进制表示:
在这里插入图片描述

1001.0等价于(-1)^0 * 1.001 *2 ^3
S=0;M=1.0001;E=3
但是又有规定因为M中的1是恒存在的,所以把去除掉1的数作为M,存进M;因为无法存进负的E值我们要在原来E的基础上加上127
所以最终结果为S=0;M=0001;E=130
9.0存入内存最终是:01000001000010000000000000000000
转为16进制:4108 0000
在这里插入图片描述
在这里插入图片描述

六、从内存中取出浮点型数据

M的值
前面加上1和’.’
E的值:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

含目的基因的质粒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值