C语言——数据的存储

主要内容:

  • 数据类型详细介绍
  • 整形在内存中的存储:原码、反码、补码
  • 大小端字节序介绍
  • 浮点型在内存中的存储解析

 

一,数据类型

1. C语言中内置数据类型

char        //字符数据类型   //1字节
short       //短整型        //2字节
int         //整形          //4字节
long        //长整型
long long   //更长的整形
float       //单精度浮点数  //4字节
double      //双精度浮点数  //8字节

而使用类型的意义:

1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。

2. 如何看待内存空间的视角。

2.类型的基本归类

整型

char
 unsigned char
 signed char
short
 unsigned short [int]
 signed short [int]
int
 unsigned int
 signed int
long
 unsigned long [int]
 signed long [int]
  1. char到底是signed char 还是 unsigned char取决于编译器的实现,在常见的编译器下,char就是signed char
  2. 无符号整型里不能存储负数
  3. 方框里的int 可以省略

浮点型

float     //单精度浮点型
double    //多精度浮点型

构造类型(自定义类型)

> 数组类型
> 结构体类型 struct
> 枚举类型 enum
> 联合类型 union
指针类型
int *pi;
char *pc;
float* pf;
void* pv;

空类型

void 表示空类型(无类型)
通常应用于函数的返回类型、函数的参数、指针类型

二,整型在内存中的存储

一个变量的创建是要在内存中开辟空间的。空间的大小是根据不同的类型而决定的。

那么在开辟的空间中是如何存储数据的呢?

我们先介绍一些基本概念。

计算机中的整数有三种表示方法,即原码、反码和补码。
三种表示方法均有 符号位 数值位 两部分,符号位都是用 0 表示 ,用 1 表示 ,而数值位
负整数的三种表示方法各不相同。

原码

直接将二进制按照正负数的形式翻译成二进制就可以。

反码

将原码的符号位不变,其他位依次按位取反就可以得到了。

补码

反码+1就得到补码。

正数的原、反、补码都相同。
对于整形来说:数据存放内存中其实存放的是补码。
但是,在我们观察数据在计算机中的存储时,我们会看到数据存储的顺序是反的,为什么呢?
接下来,我们来介绍别的概念。

三,大小端字节序介绍
1.什么是大端小端
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位 , ,保存在内存的高地址中。
2.为什么会有大端小端
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元 都对应着一个字节,一个字节为8 bit
但是在 C 语言中除了 8 bit 的char之外,还有 16 bit short 型, 32 bit long 型(要看具体的编
译器),另外,对于位数大于 8 位的处理器,例如16 位或者 32 位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

四,浮点数在内存中的存储
1.常见的浮点数
3.14159
1E10
浮点数家族包括: float double long double 类型。
浮点数表示的范围: float.h 中定义
2.浮点数的存储规则

 

 对于64位的浮点数,最高的一位是符号位s,接着的11位是指数E,剩下的52位为有效数字M。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值