数据在内存中的存储

一、数据类型介绍

        数据类型以及他们所占存储空间的大小:

用sizeof()即可得出数据类型所占存储空间的大小。

如何看到各个类型的使用范围呢?

#include <limits.h>
int main()
{
	INT_MAX;
	return 0;
}

右键INT_MAX转到声明即可看到各个数据类型的适用范围大小

 


二、数据类型的基本归类

1.整形家族

char

        unsigned  char        //无符号

        signed  char            //有符号(一般情况下char=signed char)

short

        unsigned  short

        signed  short

int

        unsigned  int

        signed  int

long

        unsigned  long

        signed  long

2.浮点数家族

float

double

3.构造类型

数组类型     如:int []   、char []

结构体类型   struct

枚举类型  enum

联合类型   union

4.指针类型

int *pi

char *pc

float *pf

void *pv

5.空类型

void 表示空类型(无类型)


三、整形在内存中的存储

 我们知道整数在计算机中是以二进制来表示的,既原码、反码和补码

三种表示方式都有符号位字符位两部分,符号位的‘0’表示,‘1’表示

正数的原码、反码和补码都相同

负数的原码、反码和补码的表示方法如下:

 原码

        直接按数值翻译成二进制的形状

反码

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

补码

        反码+1可得到补码

对于整形来说:数据存放内存中的是补码

int main()
{
	int a = 10;
	int b = -10;
	return 0;
}

a在内存中的存储

b在内存中的存储

大小端介绍

从数据在内存中的存储可看出,数据的位次和16进制的表达顺序不同,这是因为计算机中有大端存储模式小端存储模式

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

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

 

 

 我们可以用下面的代码来判断当前机器用的是大端还是小端

int main()
{
	int  i = 1;
	if ((*(char*)&i) == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

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

根据国际标准IEEE,任意一个二进制浮点数可表示为以下形式

(-1)^S*M*2^E

(-1)^S表示符号位

  M表示为有效数值

   2^E表示指数位

对于32位的浮点数,最高的一位为符号位,接着8位是指数E,剩下的23位为有效数字M

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

 


对于有效数字M的规定

M可以写出1.xxxx的形式,其中xxxxx为小数部分

在计算机中,默认第一个数为1,可以被舍去,只保留xxxx的部分


对于指数E的规定

E不全为或不全为1

        既指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一个

E全为0

        这时浮点数的指数E等于1-127(或1-1023)既为真实值

E全为1

        这时,如果有效数字M全为0,则表示无穷大。

例子:

9.0->1001.0->S=0,M=1.001,E=3+127=130

转换成二进制

0  10000010 00000000000000000001001

S         E                           M

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值