C语言中的数据存储

本文详细介绍了数据类型如char到double的内存占用,重点讲解了整形的原码、反码和补码概念,以及大小端字节序的区别。后续还将探讨浮点型在内存中的存储方式。理解这些有助于程序员优化代码和跨平台兼容性。
摘要由CSDN通过智能技术生成

大致介绍

1.数据类型介绍

2.整形储存的模式:原码,反码,补码

3.大小端字节序的判断与介绍

4.浮点型在内存中的存储

1.数据类型介绍

char              // 字符数据类型

short            //短整型

int                //整形

long             //长整形

long long     //更长整形

float             //单精度浮点型

double         //双精度浮点型

数据类型的储存大小可以用sizeof来求解

区分类型的意义

1.每个类型都会开辟自己类型大小的空间(大小决定了使用的范围)

2.便于理解看待空间的视角

对于类型的归类

整形: char, short, int, long, long long

浮点型:float, double

构造类型:数组类型, 结构体类型(struct),枚举类型(enum), 联合类(union)

指针类型:int* p, char* p, float* p, void* p

空类型:void 通常用于函数返回类型,函数参数,指针类型

2.整形储存的模式

首先,计算机接收电信号,分为正负,可以刚好等同于我们熟知的二进制。

即,整形储存的模式是原码,反码,补码。

注意,正数和负数的原反补码是不同的。

正数的原反补码相同

负整数的三种表示方法各不相同。

原码

负数的原码是将数值直接按照正负数的形式翻译成二进制就可以得到

反码

原码的符号位不变,其余取反

补码

反码加一

对于整形,在计算机中存储的是补码

其原因是,使用补码,可以将符号位和数值域统一处理,并且(CPU)只能处理加法,补码与原码可以相互转换,不需要额外的硬件。

数据如何存储

可以看出整形的存储是补码,但顺序是相反的。

原因是因为有大小端的分别

2.2 大小端介绍

什么大端小端:

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址

中;

小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地

址中。

为什么有大端和小端:

根据文献:

这是因为在计算机系统中,我们是以字节为单位的,每个地址单元
都对应着一个字节,一个字节为8 bit。但是在C语言中除了8 bit的char之外,还有16 bit的short
型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32
位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因
此就导致了大端存储模式和小端存储模式。
例如:一个 16bit 的 short 型 x ,在内存中的地址为 0x0010 , x 的值为 0x1122 ,那么 0x11 为
高字节, 0x22 为低字节。对于大端模式,就将 0x11 放在低地址中,即 0x0010 中, 0x22 放在高
地址中,即 0x0011 中。小端模式,刚好相反。我们常用的 X86 结构是小端模式,而 KEIL C51 则
为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式
还是小端模式。
如何判断计算机是大小端
#include <stdio.h>
int check_sys()
{
 int i = 1;
 return (*(char *)&i);
}
int main()
{
 int ret = check_sys();
 if(ret == 1)
 {
 printf("小端\n");
 }
 else
 {
 printf("大端\n");
 }
 return 0; }

可用此代码进行判断。

由于篇幅原因,浮点型的存储下期分享

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值