C语言-数据存储

一、数据在内存中的存储

1、内置类型:char short int long float double
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]
构造类型:
数组类型:int arr[10]; int [5];
结构体类型: struct
枚举类型:enum
联合类型:union
指针类型:int* p; char* p; float* p; void* p;
空类型:void表示空类型,通常用于函数的参数,返回类型

1.1、整形在内存中的存储

一个变量的创建需要在内存中创建空间;
计算机中的有符号数有三种表示方法,即原码、反码和补码
三种表示方法均有符号位和数值位两部分,符号位都是用0表示正,用1表示负
无符号数:原码、反码和补码 相同
有符号数:正数也相同、负数不相同
int a = 20; 0x00000014
原码:00000000 00000000 00000000 00010100
反码:00000000 00000000 00000000 00010100
补码:00000000 00000000 00000000 00010100
int b = -10; 0xFFFFFFF6
原码:10000000 00000000 00000000 00001010
反码:11111111 11111111 11111111 11110101
补码:11111111 11111111 11111111 11110110
内存中存一个整数,存的是它的二进制序列的补码
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

1.2、大小端

大段(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小段(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中;
指针类型的意义:
指针类型决定了指针解引用操作符能访问几个字节:char* p,p访问了一个字节;int i,*i能访问4个字节
有符号的char的范围是:-128 – 127
无符号的char的范围是:0 – 255

1.3、浮点数在内存中的存储

浮点数家族包括:float、double、long double
IEEE 754规定:对于32位的浮点数,最高的1位是符号位s,接着是8位的指数E,剩下的23位位有效数值M

猜你喜欢

转载自blog.csdn.net/weixin_45573296/article/details/123157340