问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

数据结构与编码基础知识

创作时间:
作者:
@小白创作中心

数据结构与编码基础知识

引用
CSDN
1.
https://blog.csdn.net/weixin_44262492/article/details/145159932

本文将介绍数据结构、基本数据类型、数字编码以及字符编码等基础知识,帮助读者建立对计算机数据处理的基本认知。

数据结构分类

数据结构可以从两个维度进行划分:逻辑结构和物理结构。

逻辑结构:线性与非线性

逻辑结构揭示了数据元素之间的逻辑关系。数据可以线性排列,也可以呈现更复杂的层次或网络关系。

  • 线性结构:数据呈一对一顺序关系。常见结构包括数组、链表、栈、队列、哈希表。
  • 非线性结构:数据呈一对多或多对多关系,分为树形结构(如树、堆、哈希表)和网状结构(如图)。

物理结构:连续与分散

物理结构描述了数据在计算机内存中的存储方式。内存由单元格(内存空间)组成,每个单元格通过内存地址访问。

  • 连续空间存储:数据存储在连续内存块中,常见于数组。
  • 分散空间存储:数据存储在非连续内存块中,通过指针连接,常见于链表。

数据结构的实现方式

数据结构可以通过基于数组或链表的方式实现。

  • 基于数组的实现:栈、队列、哈希表、树、堆、图、矩阵、张量。初始化后长度固定,但可通过重新分配内存实现一定动态性。
  • 基于链表的实现:栈、队列、哈希表、树、堆、图。支持动态长度调整,适合在运行时需要频繁修改长度的场景。

数据结构选择依据

选择数据结构时需要权衡性能与内存效率。

  • 连续存储(如数组):适合需要快速访问的数据结构,但对内存连续性要求高。
  • 分散存储(如链表):适合需要频繁插入和删除操作的数据结构,内存利用率更高。

数据结构往往基于数组和链表的组合实现。如哈希表结合数组(存储槽位)和链表(处理冲突)。

基本数据类型

基本数据类型是CPU直接运算的数据类型,表示数据的基本形式。包括整数、浮点数、字符和布尔类型。

  • 整数类型:byte、short、int、long,表示整数。
  • 浮点数类型:float、double,表示小数。
  • 字符类型:char,表示字母、标点符号及其他字符。
  • 布尔类型:bool,表示“是/否”判断。

所有基本数据类型以二进制形式存储,一个二进制位(bit)是计算的最小单位。一个字节(byte)由8个比特(bit)组成(绝大多数现代操作系统遵循此规则)。基本数据类型取值范围取决于其占用的空间大小。

数字编码

原码、反码与补码

  • 原码:二进制表示中,最高位为符号位(0表示正数,1表示负数),其余位表示数值。
  • 反码:正数的反码与原码相同,负数的反码为原码符号位不变,其余位按位取反。
  • 补码:正数的补码与原码相同,负数的补码为其反码加1。

补码解决了原码和反码中“正零”和“负零”带来的歧义问题,通过将负数运算转化为加法运算,简化硬件设计,支持的负数范围比正数多一个。

浮点数编码

根据IEEE 754标准,32位浮点数float由以下三部分组成:

  • 符号位(1位):正数或负数。
  • 指数位(8位):数值的指数部分。
  • 分数位(23位):有效数字部分。

整数与浮点数区别

  • 存储空间:int和float都占用4字节,但表示范围和精度不同。int使用所有比特表示均匀分布整数,float使用部分比特表示指数位,扩展范围但降低精度。
  • 适用场景:整数类型适用于精确计算,如计数或索引操作;浮点数类型适用于需要表示小数或范围极大数值。

字符编码

字符编码通过“字符集”将字符与二进制数一一对应,实现二进制数到字符的转换。

ASCII字符集

ASCII是最早的字符集,使用7位二进制表示,共支持128个字符。包含英文大小写字母、数字、标点符号及控制字符。EASCII扩展到8位,可表示256个字符。不同地区的EASCII字符集后128个字符定义不同,以适应本地语言需求。

GBK字符集

GB2312(1980年发布)解决了汉字表示问题,支持6763个汉字,但无法覆盖罕见字和繁体字。GBK在GB2312基础上扩展,支持21886个汉字。ASCII字符使用1字节,汉字使用2字节。

Unicode字符集

Unicode统一字符集,支持全球语言和符号,可容纳100多万个字符。通过统一的“码点”为每个字符分配编号。解决了多语言环境乱码问题,消除了不同字符集之间的兼容性障碍。

UTF-8编码

UTF-8是Unicode的一种编码方式,使用1至4字节表示一个字符。根据字符复杂性调整字节数,具备高效性和兼容性。

  • 规则:1字节:ASCII字符(最高位为0)。多字节:起始字节高位以1标识字节长度,其余位用于编码字符码点。后续字节以10开头用于填充字符码点。
  • 优点:向下兼容ASCII,适合处理历史遗留文本。多字节的起始位和校验位设计便于错误检测。

其他编码方式还包括UTF-16(2或4字节表示字符)和UTF-32(固定使用4字节)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号