P3数据结构、数据类型、数字编码、字符编码:保姆级图文详解

文章目录

  • 前言
  • 1、数据结构分类
    • 1.1、逻辑结构:线性与非线性
    • 1.2、物理结构:连续与分散
    • 1.3、数据结构的实现方式
    • 1.4、数据结构的选择依据
  • 2、基本数据类型
    • 2.1、定义与分类
    • 2.2、存储形式
  • 3、数字编码
    • 3.1、原码、反码与补码
    • 3.2、浮点数编码
    • 3.3、整数与浮点数区别
  • 4、字符编码
    • 4.1、ASCII 字符集
    • 4.2、GBK 字符集
    • 4.3、Unicode 字符集
    • 4.4、UTF-8 编码

前言

亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com

1、数据结构分类

从两个维度划分:

①逻辑结构:关注数据元素之间的逻辑关系
②物理结构:关注数据在计算机内存中的存储方式

1.1、逻辑结构:线性与非线性

①定义:逻辑结构揭示数据元素之间的逻辑关系。数据线性排列或呈现更复杂的层次或网络关系。

②分类
i:线性结构:
数据呈一对一的顺序关系。常见结构:数组、链表、栈、队列、哈希表。

ii:非线性结构:
数据呈一对多或多对多的关系。分为以下两类:
i:树形结构:如树、堆、哈希表。
ii:网状结构:如图。
在这里插入图片描述

③特点
i:线性数据结构:简单直观,逻辑关系呈线性排列。
ii:非线性数据结构:适合表示复杂层次和网络关系,逻辑关系更复杂。

1.2、物理结构:连续与分散

①定义:物理结构描述数据在计算机内存中的存储方式。内存由单元格(内存空间)组成,每个单元格通过内存地址访问。
在这里插入图片描述

②分类
i:连续空间存储:数据存储在连续的内存块中。常见结构:数组。
ii:分散空间存储:数据存储在非连续的内存块中,通过指针连接。常见结构:链表
在这里插入图片描述

③特点

i:连续存储:访问效率高,但需要大块连续内存。适用于静态数据结构。
ii:分散存储:内存利用率高,支持动态调整。适用于动态数据结构。

1.3、数据结构的实现方式

①基于数组的实现
i:可实现:栈、队列、哈希表、树、堆、图、矩阵、张量等。
ii:特点:初始化后长度固定,但可通过重新分配内存实现一定的动态性。

②基于链表的实现
i:可实现:栈、队列、哈希表、树、堆、图等。
ii:特点:支持动态长度调整,适合在运行时需要频繁修改长度的场景。

③动态与静态数据结构
i:链表:动态数据结构,长度可在运行时调整。
ii:数组:静态数据结构,长度在初始化时固定,但通过内存重分配可具备动态性。

1.4、数据结构的选择依据

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

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

2、基本数据类型

2.1、定义与分类

基本数据类型是 CPU 直接运算的数据类型,用于表示数据基本形式。包括整数、浮点数、字符和布尔类型。
①主要类型:
i:整数类型:byte、short、int、long,用于表示整数。
ii:浮点数类型:float、double,用于表示小数。
iii:字符类型:char,用于表示字母、标点符号及其他字符。
iv:布尔类型:bool,用于表示“是/否”判断。

2.2、存储形式

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

3、数字编码

3.1、原码、反码与补码

①定义:

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

在这里插入图片描述

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

③计算机使用补码原因
统一正负数的加减法运算,不需要单独设计减法电路。消除正负零的歧义,简化条件判断。硬件电路设计更简单,高效支持并行化运算。

3.2、浮点数编码

①表示方式
根据 IEEE 754 标准,32 位浮点数 float 由以下三部分组成:
i:符号位(1 位):表示正数或负数。
ii:指数位(8 位):表示数值的指数部分。
iii:分数位(23 位):表示有效数字部分。
计算公式:
在这里插入图片描述

3.3、整数与浮点数区别

①存储空间
int 和 float 都占用 4 字节,但表示范围和精度不同。int 使用所有比特表示均匀分布的整数。float 使用部分比特表示指数位,扩展范围但降低精度。

②适用场景
整数类型适用于精确计算,如计数或索引操作。浮点数类型适用于需要表示小数或范围极大的数值。

4、字符编码

**①定义:**字符编码通过“字符集”将字符与二进制数一一对应,实现二进制数到字符的转换。
②需求背景:不同语言和符号的表示需要统一规则,字符编码规范解决这一问题。

4.1、ASCII 字符集

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

4.2、GBK 字符集

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

4.3、Unicode 字符集

①特点:统一字符集,支持全球语言和符号,理论上可容纳 100 多万个字符。通过统一的“码点”为每个字符分配编号。
②意义:解决多语言环境乱码问题。消除不同字符集之间的兼容性障碍。
③问题:Unicode 只是定义字符码点,没有规定如何存储字符,导致在实际实现中需要额外编码方案。
在这里插入图片描述

4.4、UTF-8 编码

①定义:UTF-8 是 Unicode 的一种编码方式,使用 1 至 4 字节表示一个字符。根据字符复杂性调整字节数,具备高效性和兼容性。
②规则:1 字节:ASCII 字符(最高位为 0)。多字节:起始字节高位以 1 标识字节长度,其余位用于编码字符码点。后续字节以 10 开头用于填充字符码点。

③优点:向下兼容 ASCII,适合处理历史遗留文本。多字节的起始位和校验位设计便于错误检测。
④其他编码方式
UTF-16:2 或 4 字节表示字符,常用非英文字符占 2 字节。
UTF-32:固定使用 4 字节,适配性差,占用空间大。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解密AIGC三大核心算法:GAN、Transformer、Diffusion Models原理与应用

在当今数字化时代,人工智能生成内容(AIGC)技术正以前所未有的速度改变着我们的生活和工作方式。从创意无限的文本生成,到栩栩如生的图像创作,再到动听的音乐旋律,AIGC的魔力无处不在。而这一切的背后&#…

Web前端------HTML表格

一.表格标签介绍 表格,类似操作的软件excel一样,通过规范的行列方式展示数据的一种视图! 网页中(初级开发),对于这种规范的数据,使用表格标签最方便的; 实际开发(高级开…

nginx 配置域名前缀访问 react 项目

说明一下:我是使用域名转发访问的,访问流程如下: 浏览器 》 服务器1 》 服务器2 由于服务器1已经为 https 的访问方式做了 ssl 证书等相关配置,然后转发到服务器2, 所以在服务器2中不需要再配置 ssl 证书相关的东西了&…

imbinarize函数用法详解与示例

一、函数概述 众所周知,im2bw函数可以将灰度图像转换为二值图像。但MATLAB中还有一个imbinarize函数可以将灰度图像转换为二值图像。imbinarize函数是MATLAB图像处理工具箱中用于将灰度图像或体数据二值化的工具。它可以通过全局或自适应阈值方法将灰度图像转换为二…

数仓建模(三)建模三步走:需求分析、模型设计与数据加载

本文包含: 数据仓库的背景与重要性数据仓库建模的核心目标本文结构概览:需求分析、模型设计与数据加载 目录 第一部分:需求分析 1.1 需求分析的定义与目标 1.2 需求分析的步骤 1.2.1 业务需求收集 1.2.2 技术需求分析 1.2.3 成果输出…

【C++指南】类和对象(八):匿名对象

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 引言 在C编程中,匿名对象是一种特殊的对象,它在创建时没有被命名。 这种对象通常用…

编译pytorch——cuda-toolkit-nvcc

链接 https://blog.csdn.net/wjinjie/article/details/108997692https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#switching-between-driver-module-flavorshttps://forums.developer.nvidia.com/t/can-not-load-nvidia-drivers-on-ubuntu-22-10/239750https://…

智汇云舟参编《城市轨道交通安全防范系统技术要求》国标正式发布

近日,根据国家标准化管理委员会官网,全国标准信息公共服务平台发布的公告,国家标准《城市轨道交通安全防范系统技术要求》(GB/T 26718-2024)已由全国城市轨道交通标准化技术委员会上报国家标准化管理委员会&#xff0c…

Unity解决滑动条的value值的滑动条消失问题

在这里我们看到原本的value的滑动条消失了 解决办法 把编辑器的边框往外面拉一下就可以了(之前遇到这个问题还重启了几次unity没想到居然是这个问题)

HarmonyOS应用开发者初级认证最新版– 2025/1/13号题库新版

1.欢迎各位读者,本文档来自鸿蒙开发学员亲测,最新版。(考试时直接Ctrlf进行搜索,一定要认真比对答案,有的答案相似度很高)!!!!!! 欢迎…

kubernetes v1.29.XX版本HPA、KPA、VPA并压力测试

序言: 在大型电商、购物、直播活动期间,对于火爆流量的激增,如何保障业务稳定并且做到资源不浪费,自动回收。 场景:kubernetes 原生容器化承载业务流量(非云环境) 方案:kubernetes自…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (五、电影详情页的设计实现)

在上一篇文章中,完成了电影列表页的开发。接下来,将进入电影详情页的设计实现阶段。这个页面将展示电影的详细信息,包括电影海报、评分、简介以及相关影人等。将使用 HarmonyOS 提供的常用组件,并结合第三方库 nutpi/axios 来实现…

Vulnhub DC-8靶机攻击实战(一)

导语   Vulnhub DC-8靶机教程来了,好久没有更新打靶的教程了,这次我们在来更新一期关于Vulnhub DC-8的打靶训练,如下所示。 安装并且启动靶机 安装并且启动靶机,如下所示。 开始信息采集 进入到Kali中,通过如下的命令来查找到靶机的IP地址。 arp-scan -l根据上面的结…

神经网络基础-正则化方法

文章目录 1. 什么是正则化2. 正则化方法2.1 Dropout正则化2.2 批量归一化(BN层) 学习目标: 知道正则化的作用掌握随机失活 DropOut 策略知道 BN 层的作用 1. 什么是正则化 在设计机器学习算法时希望在新样本上的泛化能力强。许多机器学习算法都采用相关的策略来减小…

【Linux】12.Linux进程概念(1)

文章目录 1. 冯诺依曼体系结构2. 操作系统(Operator System)概念设计OS的目的胆小的操作系统定位如何理解 "管理"总结 3. 进程基本概念task_struct-PCB的一种task_ struct内容分类组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程-fork初识 1. 冯诺依…

【Linux网络编程】序列化与反序列化

目录 一,序列化和反序列化的说明 二,Jsoncpp库的介绍 三,Jsoncpp库的使用 3-1,Json::Value类 3-2,Json::StreamWriter类 3-3,Json::CharReader类 一,序列化和反序列化的说明 序列化与反…

Oracle报错ORA-01078、LRM-00109

虚拟机异常关机后,rac数据库备机无法启动数据库,报错如下 解决方法: 找到如下路径文件 执行: cp init.ora.016202516818 /u01/app/oracle/product/19.3.0/db/dbs/ mv init.ora.016202516818 initplm2.ora 再次进入命令行sqlpl…

STM32-keil安装时遇到的一些问题以及解决方案

前言: 本人项目需要使用到STM32,故需配置keil 5,在配置时遇到了以下问题,并找到相应的解决方案,希望能够为遇到相同问题的道友提供一些解决思路 1、提示缺少(missing)version 5编译器 step1:找…

【Hive】海量数据存储利器之Hive库原理初探

文章目录 一、背景二、数据仓库2.1 数据仓库概念2.2 数据仓库分层架构2.2.1 数仓分层思想和标准2.2.2 阿里巴巴数仓3层架构2.2.3 ETL和ELT2.2.4 为什么要分层 2.3 数据仓库特征2.3.1 面向主题性2.3.2 集成性2.3.3 非易失性2.3.4 时变性 三、hive库3.1 hive概述3.2 hive架构3.2.…

mqtt详细介绍及集成到springboot

mqtt详细介绍及集成到springboot 1.mqtt发布/订阅消息参数详细介绍2. mqtt客户端连接参数介绍3. docker-compose搭建mqtt服务端4. springboot集成mqtt实现发布订阅5. 测试注意事项 1.mqtt发布/订阅消息参数详细介绍 1.1. qosQoS0 ,Sender 发送的一条消息&#xff0…