数据类型介绍
整型在内存中的存储:原码、反码、补码
大小端字节序介绍及判断
浮点型在内存中的存储解析
1.数据类型介绍
我们已经学习过了基本的数据类型:
整型:
shor —— 短整型
int —— 整型
long —— 长整型
long long —— 更长的整型
浮点型:
float —— 单精度浮点型
double —— 双精度浮点型
字符型:
char —— 字符型
我们可以思考,以上的类型还能细分吗?
答案是可以的
1.1
有符号型:
无论是整型还是字符型还可以分为:有符号型与无符号型
有符号型通常会在前面+signed,而对于整型和浮点型来说
再前面+signed与单纯short、int....是一样的,因此我们在书写类型是经常会省略signed.
而对于字符型——char来说,大部分情况下signed与单纯char的意义也相同
char是否与signed char意义相同取决于编译器
无符号型:
unsigned+类型——表示无符号型
无符号型通俗的来说就是没有正负之分的数
列如:月份
年龄
构造类型
指针类型
空类型
2.整型在内存中的存储
我们创建的变量,实际上是会在内存中开辟一个空间进行存储的,而空间的大小是由类型决定的.
2.1 原码、反码、补码
在计算机中,整型变量是以二进制的形式存储在内存中的,
则有三种方法表示二进制,分别为原码、反码、补码
原码、反码、补码都由以下两部分组成:
符号位 —— 符号位都是用0表示“正”,用1表示“负”
数值位 —— 数值位则要分情况
正数时的原、反、补码都相同
负数时原、反、补表示方法各不相同:
对于整型来说,数据存放内存中的其实是存放的补码
请看下图:
能有效减轻CPU负荷
该图为整型数据在内存中存储的地址,在内存中,计算机会将二进制转
换为十六进制作为地址,为什么呢?因为十六进制的地址能给人更清晰地
观感,整型为4个字节,32个比特位,十六进制时,四个比特位则为一个字节
从图上可以看到,每一行都有8个数值
但貌似图中的存放顺序有点不对劲!
2.2 大小端介绍
通过下图理解:
3.浮点型在内存中的存储
浮点型的数据存储与整型相同吗?
我们看看以下代码:
#include<stdio.h>
int main()
{
int n = 9;
float* pFloat = (float*)&n;
printf("n的值为:%d\n", n);
printf("*pFloat的值为:%f\n", *pFloat);
*pFloat = 9.0;
printf("num的值为:%d\n", n);
printf("*pFloat的值为:%f\n", *pFloat);
return 0;
}
输出的结果为:
通过该例子,我们发现浮点型的数据存储似乎与整型的不一样
这就是我对数据类型存储的理解,谢谢观看!