数据的存储

数据的存储

1.数据的类型

整形家族

char (字符在内存中存储的是字符的ASCII码值,所以归类在整型家族)
unsigned char
(signed) char

short
unsigned short
(signed) short

int
unsigned int
(signed) int

long
unsigned long
(signed) long

浮点数家族

float

double

long double

构造类型

数组类型

结构体类型 struct

枚举类型 enum

联合类型 union

指针类型

int *pi

char *pc

float* pf

void* pv (无类型指针)

空类型

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

2. 整形在内存中的存储

2.1.原码、反码、补码

计算机中的整数有三种2进制表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位

  1. 正数的原、反、补码都相同。

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

原码
直接将数值按照正负数的形式翻译成二进制就可以得到原码
反码
将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码
反码+1就得到补码。


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


2.2.大小端

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地
址中。
在这里插入图片描述

signed char与unsigned char的区别(int类比)
在这里插入图片描述

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

3.1.浮点数存储规则

根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:
(-1)^S * M * 2^E
(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。
M表示有效数字,大于等于1,小于2。
2^E表示指数位。

举例来说:
十进制的5.0,写成二进制是 101.0 ,相当于 1.01×2^2 。
那么,按照上面V的格式,可以得出S=0,M=1.01,E=2。
十进制的-5.0,写成二进制是 -101.0 ,相当于 -1.01×2^2 。那么,S=1,M=1.01,E=2。


float和double存储模型
在这里插入图片描述
M
IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的
xxxxxx部分.比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。

E
E为一个无符号整数(unsigned int) ,IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值