C语言内存、进制、ASCII码易混知识点

时间:2022-11-09 12:46:34

1、计算机数据在内存中的存储方式为:二进制。

2、CPU、硬盘和内存
应用程序软件运行的时候:下载或保存的资料都是保存在硬盘中,断电后还在,内存中的数据断电后清除了。
为什么呢?内存包括RAM(主存随机存储器)、ROM(只读存储器,一次读入,反复使用)。以及CACHE(高速缓存)。

  • ROM(只读存储器):在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器停电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据。如BIOS ROM。

  • RAM(随机存储器):既可以从中读取数据,也可以写入数据,断电数据丢失。

  • CACHE(高速缓冲存储器):Cache也是我们经常遇到的概念,也就是平常看到的一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)这些数据,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存,当然,如需要的数据在Cache中没有,CPU会再去读取内存中的数据。

RAM与CPU直接交换数据的内部存储器,称为主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
特点:

  • 随机存取
  • 易失性
  • 对静电敏感
  • 访问速度
  • 需要刷新(再生)
    • 现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。

3、各进制
十进制数:正常书写表达 1 10 34 99 等,程序代码中通常写的都是十进制数;
二进制数:计算机内存中数据存储和运算表达方式;
八进制数、十六进制数——本质还是二进制数

在C语言中,所有的ASCII码都可以用反斜杠\加数字(默认是八进制、也可以用\x十六进制表示)来表示,称为转义字符(Escape Character),因为\后面的字符都不是原来ASCII码字符的的意思了。

编程语言中,常常以数字0开始表示该数字是八进制数字
以0x开头为十六进制数。

printf("%o",10);八进制输出为字母o

4、int类型最大值是2的32次方减一,为什么要减一呢?

假设一个单片机用二位二进制来表示数,很明显就是00,01,10,11这四种情况,分别表示0,1,2,3这四个数。
这就对了,原来0也占用了一种状态,总共能表示2^32种状态的16位二进制数就只能表示0~2^32-1,即 0~32767 了。

int是c标准规定的4字节的长度,而对于字长不同的cpu架构而言,其不同的字长应该表现在sizeof(long)的值不同;