C语言数据的存储 上篇

95 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

一、数据类型详细介绍

1、内置类型

==内置类型就是C语言中自带的数据类型。在之前的学习中也有一定的了解:==

char short int long long long float double

2、类型的意义

  • 1、使用这个类型开辟内存空间的大小(大小决定了使用范围)
  • 2、如何看待内存空间的视角

3、类型的归类

1、整型家族

在这里插入图片描述

2、浮点型家族

在这里插入图片描述

3、构造类型(自定义类型)

在这里插入图片描述 ==数组也是一种自定义类型,数组去掉数组名就是类型==

int main()
{

	int arr[10];//int [10]
	int arr[5];//int [5]
	return 0;
}

4、指针类型

在这里插入图片描述

5、空类型

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

二、整型在内存中的存储

1、原码、反码、补码

==数据在内存中是以二进制的形式进行存储的。对于整数来说,整数的二进制有3种表示形式:原码、反码、补码== ==对于正负整数来说有符号位之分:如果为正,高位为0;如果为负,高位为1==

正整数:原码、反码、补码相同 ---------------------------------------------------------分割----------------------------------------------------------------------- 负整数:原码、反码、补码之间的转换是需要计算的 原码:根据数值直接写出它的二进制序列 反码:原码的符号位不变,其它位按位取反 补码:反码+1 ==注意:整数在内存中存储的是补码,而打印出来给人看到的是原码==

2、为什么在内存中是以补码的形式进行存储的

==CPU只有加法器,只可以做加法运算,减法等运算都是用加法去模拟的== ==官方来说:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器),此外,补码和原码相互转换,其运算过程是相同的,不需要额外的硬件电路== 在这里插入图片描述 ==验证补码在内存中存储并计算:==

==1 - 1 -> 1 + (-1):== --------------------------------------使用原码进行计算------------------------------------- 在这里插入图片描述

--------------------------------------使用补码进行计算------------------------------------- 在这里插入图片描述

3、-10的存储

==这里有一个点就是在当前编译器下-10在内存中是倒着存储的== 在这里插入图片描述