文章目录
- 一、有无符号整型的存储
- 1.整形家族
- 2.整形在内存中的存储
- 3.大小端介绍
- 4.unsigned 类型存储
- 二、浮点型的存储
- 1.浮点型家族
- 2.浮点型的存储
一、有无符号整型的存储
1.整形家族
字符在内存中存储的是字符的ASCII码值,ASCII码值是整形,所以它也归于整型家族
char //字符数据类型
unsigned char
signed char//C语言没有明确定义是否有signed char 取决于编译器
short //短整形
unsigned char
signed char
int //整形
unsigned char
signed char
long //长整形
unsigned char
signed char
long long //更长整形//不常用
unsigned 指的是没有符号位
2.整形在内存中的存储
计算机能够处理的是二进制数据,数据在内存中存储的都是以二进制存储
整形的二进制存储形式有:原码、反码、补码
正整数:原码、反码、补码相同
负整数:原码、反码、补码要进行计算
整数在内存中存储的是补码的二进制序列
为了方便查看,在查看内存时一般是16进制形式
例:
int main()
{
int a = 10;
return 0;
}
3.大小端介绍
大端字节序是把数据的高字节内容存放到低地址,低字节内容存放在高地址处
小端字节序是把数据的高字节内容存放到高地址,低字节内容存放在低地址处
例1:小端字节序
int main()
{
int a = 0x11223344;
return 0;
}
VS编译器中默认使用小端字节排序
例2:大端字节序
int main()
{
int a = 0x11223344;
return 0;
}
4.unsigned 类型存储
由于unsigned 类型没有符号位,所以数据都 >=0 的,其中char 的类型的值的范围是:-128 ~ 127 ; unsigned char 的值的范围是:0 ~ 255;int 的值的范围是:- 2^31 ~ 2^31-1 unsigned int 的值的范围是:0 ~ 2^32-1;
signed char
unsined char
int型的以此类推
二、浮点型的存储
1.浮点型家族
float 单精度浮点型
double 双精度浮点型
long double 更长的双精度浮点型
2.浮点型的存储
浮点数存储规则:
根据国际标准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
按照上面的格式,可以得出S=0,M=1.01,E=2