1. 前言
当我们用计算机存储数据时,实际上就是让计算机把一些信息转化为数字进行储存和处理。那么,计算机是如何存储这些数字的呢?
首先,让我们了解一下计算机内部的硬件结构。计算机的内部有一个叫做 “存储器” 的组件,它用来存储数据。存储器的结构是由许多个小型的存储单元组成的,每个存储单元都有一个特定的地址来唯一标识它。
现在,我们来探讨一下计算机如何将我们的信息转化为数字来进行存储。计算机使用的是二进制数字,也就是只由0和1两个数字组成的数字系统。 这里不得不提一下二进制的工作原理:二进制系统中的每一位数字仅能表示0或1,其中0表示关闭,1表示打开。计算机通过开关存储单元来表示0或1,这就是计算机如何存储数字的基本原理。关于计算机中为什么使用二进制,可以看这篇文章: 计算机为什么采用二进制
2. ASCII 编码
那么,当我们输入信息时,计算机需要先将其进行编码,以便于存储和处理。最常用的编码方式是 ASCII 编码,它定义了128个字符的标准,每个字符都用一个唯一的7位二进制代码来表示,如下图示:
ASCII(American Standard Code for Information Interchange 美国标准信息交换码)。
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
3. Unicode 编码
还有一种更为高级的编码方式是 Unicode 编码,它们可以存储多国语言的字符,Unicode 字符常由两个字节的二进制代码表示。但由于它们具有更多的表示范围,Unicode 编码所需的存储空间更大。(Java中使用的字符集就是 Unicode编码集)
Unicode 使用2个字节存储一个字符,对于大量的英文字符(1个字节可以存储),无疑是浪费空间的,所以出现了UTF-8、UTF-16编码规则,UTF-8是以8位为一个编码单位的可变长编码规则。这时:
英文字符:还是按照ASCII码表对应的数字进行存储(1个字节)
中文字符:通常需要3个字节来存储
3.1 案例
\u字符的Unicode编码值的十六进制型
例如:‘\u96ea’ 代表 ‘雪’
char c = '\u96ea'; char c = '雪';
直接给char类型变量赋值十进制的0~65535之间的Unicode编码值
例如 :'a’的编码值是97
char c2 = 97; System.out.println(c2);//a
4. 计算机中的存储单元
- 位(bit): 是数据存储的最小单位,也就是一个二进制位。其中8 bit 就称为1个字节(Byte)。
- 字节(Byte): 是计算机信息技术用于计量存储容量的一种计量单位,1字节等于8bit。
- 转换关系:
- 8 bit = 1 Byte
- 1024 Byte = 1 KB
- 1024 KB = 1 MB
- 1024 MB = 1 GB
- 1024 GB = 1 TB
5. 总结
当计算机处理数据时,它需要根据存储单元的地址找到要处理的数据。由于每个存储单元都有一个唯一的地址,计算机可以非常简单地寻找并检索需要的数据。它只需要知道数据的地址,就能够快速地找到并读取或写入数据了。
对于计算机,存储数据实际上就是将数据转化为数字,并将数字保存在存储单元中。许多不同的编码方式可用于将信息转换为数字。我们可以通过计算机的内部地址系统来简单地定位和访问存储单元中的数据。