数据的存储

本文详细介绍了数据类型的分类,包括整型、浮点型、结构类型、指针类型和空类型,并探讨了整型在内存中以原码、反码、补码的表示方式。此外,还阐述了大小端字节序的概念,通过实例展示了大端和小端存储的区别。内容深入浅出,适合计算机科学初学者理解数据在计算机中的存储原理。

目录

1.数据的类型介绍

1.1类型的基本归类:

2.整型在内存中的存储

2.1原码,反码,补码

2.2大小端的介绍


1.数据的类型介绍

1.1类型的基本归类:

内置类型

  • char          1字节                  字符整型类型
  • short          2字节                 短整型
  • int              4字节                 整型
  • long           4/8字节              长整型  
  • long long    8字节                更长的整型   //C99引入
  • float            4字节                单精度浮点型
  • double        8字节                双精度浮点型

   

类型的意义

1.决定了使用这个类型定义变量是开辟空间的大小
2.决定了我们看待内存空间的视角

整型家族

char  //字符的本身是ASCII码值,是整型,所以划分为整型家族  

unsigned char  

signed     char

//char到底是unsigned char 还是signed char,它是未定义的,取决于编译器实现

short

unsigned short [int]

signed     short [int]

int   

unsigned int

signed     int

//int a -->  signed int 在生活是有些数据是没有负数的 如:升高 体重  有负数的 如:温度  

//int a=10 ;a是一个有符号的整型 ,一个整型等于4字节=32bit 、

//符号位是0表示整数  符号位是1表示负数

long   

unsigned long 

signed    long

long long

unsigned long long

signed     long long

浮点家族

float

double

//精度越低,存储数据的范围越小;精度越高,存储数据的范围越大;

结构类型(自定义类型)

数组类型        int arr[] 或char arrr[]

结构体类型    struct

枚举类型        enum

联合类型        union

指针类型

char*  pc

int *    pi

float*  pf

void*  pv

空类型

void表示空类型(无类型)

通常用于函数的返回类型,函数的参数,指针类型;

2.整型在内存中的存储

2.1原码,反码,补码

在计算机系统中,数值一律按补码表示和存储。原因在于,使用补码可以将符号位和数值域统一处理;同时在加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运行过程是相同的,不需要额外的硬件

#include <stdio.h>
int main()
{
	int a = 1-1;
	printf("%d", a);

	return 0;
}
//1
//00000000000000000000000000000001
//-1
//10000000000000000000000000000001 原
//11111111111111111111111111111110 +1 反
//11111111111111111111111111111111 补
//1+-1
//1 00000000000000000000000000000000 多出来一位溢出为0

整数的二进制表示也有三种表现形式:

1.正的整数:原码,反码,补码相同;

2.负的整数:原码,反码,补码需要计算:

原码:直接通过正负的形 式写出的二进制序列就是原码
反码:原码的符号位不变,其他位按位取反得到的就是反码
补码:反码+1就是补码整数内存中存放是补码的二进制序列

整数内存中存放是补码的二进制序列

  

 我们从上面图片不难看出他们存放的是二进制的补码(用16进制表示)

#include <stdio.h>

int main()
{
	int a = -10;
//10000000000000000000000000001010 原码
//11111111111111111111111111110101 +1 反码
//11111111111111111111111111110110 补码
//所以这里-10 用16进制表示为0xf6ffffff
   // int a = 10;
//00000000000000000000000000001010 原码
//00000000000000000000000000001010 反码
//00000000000000000000000000001010 补码
//所以这里10 用16进制表示为0x0a000000

	return 0;
}

2.2大小端的介绍

大端[字节序]存储:
把一个数据的高位字节序的内容存放在低地址处,把低位字节序的内容放在高
地址处,就是大端字节序存储。
小端[字节序]存储:
把一个数据的高位字节序的内容存放在高地址处,把低位字节序的内容放在低|
地址处,就是小端字节序存储。

我们在vs2013中观察:

 得出结论:该系统为小端[字节序]存储

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

includeevey

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

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

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

打赏作者

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

抵扣说明:

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

余额充值