目录
1.数据类型
(1)为什么要有数据?
由此可见,创建数据的,设置数据类型的本质,就是告知计算机,在计算机的内存上,开辟空间。
(2)C语言中常见的数据类型
(3)数据类型的大小
(4)为什么数据类型的种类丰富?
2.数据的存储
(1)数据是怎样存储在内存里的?
数据存储与数据类型是否有关?
(2)数据是怎样存入内存中的?
整数在内存中的储存形式:
原码-------------------- 反码--------------------- 补码
(3)数据存入内存的方式
总结:五个问题
数据在我们生活中,无处不在。譬如说,当我们在商场看到琳琅满目的商品时,各种各样的商品,都会有对应的标签,标识这个商品的价值,也就是我们常说的价格,也就是商品的数据。
商品的价格,告知我们用多少钱可以买到商品。同理,在c语言中,一个个的数据,体现着我们对计算机发出的指令,需要多少内存才能满足我们所发出的数据的指令。
我们常见的有两大类: 基本数据类型 自定义类型 指针类型 空类型
基本数据类型:
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
自定义类型:
struct //结构体
union //联合体
enum //枚举类型
(int) arr[] //数组
//"()"内为可替换
指针类型:
//int a=0;
(int) *p = &a; //指针类型
(int*) *p=&p;
//“()”内为可替换
以及空类型: void
基本数据类型的大小(单位:字节,表中每数字一一对应。)
在看到C语言中的基本数据类之后,可能会有人会问。为什么要设置这么多的数据类型?难道一个int型的数据类型不够吗?
其实是不够的。正如我现在告诉你我兜里有一百。但我却没告诉你这一百是一百块,还是一百欧元、一百美元。因此,难以准确的知道我兜里到底有多少钱。
数据类型设置的具有多样性,也正是这个道理。在不同的场景、情况下,我们所要表达、表述的就不同。单一的数据,它是很难适应多样、变化、复杂的环境。因此,环境的多样性才是决定数据类丰富的重要因素。
正如前文所说,定义数据的本质是在内存上开辟空间。数据类型是数据在内存中开辟大小的多少的决定性因素。
但我们要在这里提一个问题:
我们可以下面代码:
注:此代码在编译器并未报错。
我们都知道,unsigned int 表示的是无符号整型,然而却被赋值-10,竟然编译器并不会报错。
当然这不是编译器不报错。而是简单地对上述的提问作了回答:
数据的存入与 数据类型 并无关联。
于是乎,我们不免会发问,那数据是怎样存入内存之中的呢?
我们或多或少知道,计算机不像人一样,熟悉十进制数,反而只认得二进制数。任何在内存中存入的数据,都是由二进制序列组成的。
int 类型的数据,会在内存中开辟大小为4字节的空间。此刻我们可以看到sz在内存中储存的序列。 注:此时并非二进制位,而是十六进制。
在分析之前,我们得先引入计算机储存形式的概念,也就是我们常说的"三码"。
(1)如何识别三码?
在计算机中,总是以补码,作为最终内存的存储二进制序列。
正数:三码相同
负数:三码不同
那么计算机是怎样区别 正数与负数呢?
由此,我们就可以引出 “符号位”的概念。
1 ———> 负数
0 ———>正数 注:只需要在此知道有这个概念即可
(2)三码的关系
原码 进行 按位取反 ------> 反码+1------->补码。
注: 按位取反时,应当保证符号位不变。
有上述三码的铺垫。也就可以进行图片内容的分析。
以上部分简单地谈了谈C语言中数据的存储以及数据的类型。
总结出来就是以下几个问题:
①计算机为什么要有数据
②数据为什么类型多样
③计算机是如何存储数据的
④数据类型与储存是否有关
⑤以及三码的认识
望诸位读者,能有所获,学有所成。