无论是保存一段文字、拍摄一张照片,还是让智能助手分析资料,数字设备都需要用二进制数据表示和处理这些内容。人工智能也建立在这一基础上:训练数据、模型参数和计算结果,都需要采用适当的表示形式,以便存储、传输和计算。
理解数据表示与编码,有助于认识人工智能如何接收和处理信息,以及数据精度、存储空间与计算效率之间的关系。
一、数制及其转换
计算机使用二进制表示和处理数据,人们日常更习惯使用十进制,也常用八进制或十六进制简写二进制数据。
数制转换改变的是同一个数的书写形式,并不改变它的数值。
1.1 数制
数制(Numeral System)规定数的表示方法。
在位置计数法中,数码是允许使用的符号,基数表示逢几进一,位权表示某一位置的权值。
二进制(Binary):基数 2,仅使用 0 和 1。逢二进一。
八进制(Octal):基数 8,使用数字 0~7。逢八进一。
十进制(Decimal):基数 10,人类常用,使用数字 0~9。逢十进一。
十六进制(Hexadecimal):基数 16,使用数字 0~9 和字母 A~F。逢十六进一。
比如:
十进制数 13 = 二进制 1101 = 八进制 15 = 十六进制 D采用二进制的主要原因是两种状态较容易稳定区分,能够对应电子开关与逻辑运算,电路实现和规则相对简单。在有噪声的条件下,给两类状态留出判别余量通常比区分许多紧密状态更容易。
1.2 不同进制数的转换
1.2.1 任意进制转十进制:按权展开法
在基数为 r 的位置计数法中,各位数码乘以对应位权后相加,即可得到该数的值:
![]()
其中,r 为基数,dᵢ 为第 i 位的数码值,满足 0≤dᵢ<r;整数个位的位权为 r⁰,小数点后第一位的位权为 r⁻¹。
例如:
0.AC₁₆ = 10×16⁻¹ + 12×16⁻² = 10/16 + 12/256 = 0.625 + 0.046875 = 0.671875₁₀1.2.2 十进制转任意进制
对于非负数,整数部分采用“除基取余,逆序排列”,直到商为 0;小数部分采用“乘基取整,顺序排列”,每次用剩余小数继续相乘,直到小数部分为 0 或达到所需位数。
![]()
有限位十进制小数转换为其他进制后,不一定仍是有限位小数。例如,0.1₁₀ 转为二进制是无限循环小数,使用有限位存储时需要截断或舍入。
1.2.3 二进制与八进制、十六进制的转换
每三位二进制数对应一位八进制数,每四位二进制数对应一位十六进制数。
例如:
11010110₂ = (1101 0110)₂ = D6₁₆转换时,以小数点为界,分别向左右两侧分组。整数部分不足一组时在最左侧补 0,小数部分不足一组时在最右侧补 0。
二、数值数据编码
数制转换改变数的书写形式,数值编码(Encoding)则规定如何用有限个二进制位表示数值。
一个数在计算机中的编码表示称为“机器数”,该编码实际表示的数值称为“真值”。同一串二进制位采用不同的编码规则,可能表示不同的真值。
人工智能中的输入数据、模型参数和中间计算结果,也需要选择相应的数值表示方式。
不同方式在表示范围、精度、存储占用和计算效率上各有特点,还可能出现舍入误差或溢出(Overflow)。
2.1 无符号整数编码
无符号整数编码用于表示非负整数。n 位无符号整数的取值范围为 0~2ⁿ−1,例如,8 位无符号整数的范围为 0~255。
以下示例按固定 8 位无符号整数说明,超出 8 位的部分被丢弃;实际程序也可能采用扩大位宽、报错或饱和处理等方式,具体取决于数据类型和运算规则。
加法示例:
200 + 100 = 300 → 11001000 + 01100100 = 1 00101100₂ → 截断为 8 位 00101100₂ = 44(溢出)移位示例:
200 ÷ 2 = 100 → 11001000 >> 1 = 01100100₂这里,<< 表示左移,>> 表示右移。对无符号整数,左移一位在不溢出时相当于乘以 2;右移一位并在高位补 0,相当于除以 2 后向下取整。
无符号整数编码常用于计数、长度、地址等非负量。
2.2 有符号整数编码
有符号整数用于表示负整数、零和正整数。
在原码、反码和补码表示中,最高位承担符号标识作用:0 表示非负,1 表示负;但在原码和反码中,还存在符号位为 1 的“负零”。
以 8 位编码为例,若从最低位开始按 0 编号,则最高位为第 7 位。
![]()
现代计算机通常采用补码表示有符号整数。补码使加减法能够共用主要运算电路,并且只有一种零的表示。
将原码、反码和补码放在一起比较,有助于理解它们表示负数的不同方式。
原码:最高位表示符号,其余位表示数值的绝对值。
反码:非负数与原码相同;负数在原码基础上保持符号位不变,其余位取反。
补码:非负数与原码相同;负数可将其绝对值按相同位宽写成无符号二进制数,再将全部位取反并加 1,只保留规定的位数。
![]()
对于 n 位补码,最高位的位权为 −2ⁿ⁻¹,其余各位具有通常的正位权。因此,最高位为 1 时,不能将其余位直接解释为负数的绝对值。n 位补码的取值范围为:
最小值 = −2ⁿ⁻¹
最大值 = 2ⁿ⁻¹ − 1
例如,8 位补码的范围是 −128~127,其中 10000000 表示 −128。
2.3 定点数编码
定点数(Fixed-point Number)通过约定固定的缩放比例表示数值。
对于二进制定点数,可以理解为二进制小数点的位置固定,但小数点本身通常不占用存储位。
若约定低 f 位为小数部分,则二进制小数点位于这 f 位之前:
• 无符号定点数:真值 = 按无符号整数解释的编码值 ÷ 2ᶠ
• 补码有符号定点数:真值 = 按补码整数解释的编码值 ÷ 2ᶠ
示例:
还原真值:11110101₂ → (补码表示的 −11)÷ 2² = −2.75定点运算可以借助整数运算实现,实际效率取决于硬件和实现方式。在总位数固定时,增加小数位数可以提高表示精度,但会缩小表示范围;超出范围或无法精确表示的数值,仍需处理溢出或舍入。
2.4 浮点数编码
浮点数(Floating-point Number)类似科学计数法,通过符号、有效数和指数表示数值,在有限位数下覆盖较大的数值范围,但只能精确表示其中有限个数。
![]()
IEEE 754 中常见的两种二进制浮点格式为:
• 单精度(binary32):1 位符号位、8 位指数位(阶码)和 23 位小数字段,指数偏置为 127。
• 双精度(binary64):1 位符号位、11 位指数位(阶码)和 52 位小数字段,指数偏置为 1023。
对于规格化数,有效数的二进制形式为 1.x,其中前导的 1 隐含存储,因此单精度和双精度分别具有 24 位和 53 位二进制有效精度。零、非规格化数、无穷大和非数值(NaN)采用特殊编码规则。
示例:
结果:0 10000001 01110000000000000000000浮点数的可表示间隔随数值大小变化。例如,十进制 0.1 无法用有限位二进制浮点数精确表示,因此运算可能产生舍入误差。
人工智能中也会使用不同精度的浮点格式,或通过量化将部分数值映射为低位宽表示,以减少存储占用和计算开销,同时需要评估对模型效果的影响。
2.5 BCD 码
二进制编码的十进制数(Binary-Coded Decimal,BCD)按十进制数位分别编码。
常见的 8421 BCD 码用 4 位二进制表示一个十进制数字,其中 0000~1001 对应 0~9,1010~1111 不作为有效的十进制数字编码。
例如,25 表示为:0010 0101。
![]()
BCD 可用于十进制显示和部分十进制计算场景。它能按十进制数位保存有限位十进制数,避免将这些数值转为二进制小数时产生的表示误差,但并不能消除所有运算中的舍入。例如,1÷3 在有限位十进制表示下仍需舍入。
与纯二进制整数编码相比,BCD 通常需要更多存储位。
三、非数值数据编码
文字、声音、图像和视频虽然不直接表现为数值,但都可以按照相应规则转化为数字数据。在人工智能应用中,这些数据通常还需要经过预处理,组织为模型能够运算的数值数组。因此,数据的数字化与编码是基础,模型所需的输入表示则是在此基础上的进一步转换。
3.1 字符编码
字符编码规定文字和符号如何表示为可存储、可交换的数据。它适用于键盘输入、文件读取和网络传输等来源的文本,不限于键盘输入的字符。
3.1.1 英文字符编码
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最早的字符编码标准之一,用 7 位二进制表示,共能编码 128 个字符,覆盖英文字母、数字字符、标点和控制字符。
ASCII 编码表
![]()
ASCII 字符常在一个字节中存放,最高位为 0。
示例:字符串“Hello”的 ASCII 编码
![]()
示例:ASCII 编码与字符、数值的区别
![]()
ASCII 仅 128 个编码位置,无法容纳中文、日文、阿拉伯文、数学符号和表情等大量字符。
3.1.2 统一字符集与字节编码
统一码(Unicode)为文字和符号建立统一的编码体系,为已编码的抽象字符分配码点(Code Point),并规定相关属性和处理规则。
码点通常写为“U+”后接十六进制数。例如,A 的码点为 U+0041,“中”的码点为 U+4E2D。
![]()
Unicode 转换格式(Unicode Transformation Format,UTF)规定如何用编码单元表示 Unicode 标量值。
Unicode 标量值是除代理码点 U+D800~U+DFFF 之外的 Unicode 码点;代理码点用于 UTF-16 的编码机制,不单独表示字符。
UTF-8 使用 8 位编码单元,将每个 Unicode 标量值编码为 1~4 个字节。ASCII 范围内的字符使用 1 个字节,常用汉字通常使用 3 个字节,基本多文种平面之外的汉字等字符使用 4 个字节。
![]()
UTF-8 兼容 ASCII,是互联网和跨平台文本交换中广泛使用的编码。保存和读取文本时采用一致的编码规则,是避免乱码的基本条件。
示例:
编码结果:11100100 10111101 10100000 (十六进制:E4 BD A0)UTF-16 使用 16 位编码单元,每个 Unicode 标量值需要一个或两个编码单元。
UTF-32 使用 32 位编码单元,每个 Unicode 标量值需要一个编码单元。
一个 Unicode 标量值不一定对应屏幕上看到的一个完整字符。例如,某些带附加符号的字母或组合表情需要由多个码点共同表示。
3.1.3 中文字符编码
中文信息处理曾广泛使用面向特定地区和字符范围的编码,后来逐步扩展,并与 Unicode 体系建立对应关系。
常见编码包括 GB 2312、GBK、Big5 和 GB 18030。
GB 2312 是较早的国家标准;GBK 扩展了 GB 2312 的字符范围;Big5 主要用于繁体中文环境。
GB 18030 是我国现行的强制性国家标准《信息技术 中文编码字符集》,采用单字节、双字节和四字节编码,并规定与 Unicode 的映射关系。
此外,中文信息处理还涉及输入、存储与显示三个不同环节:
![]()
• 输入码:输入法将按键序列映射为候选汉字的规则,如拼音、五笔。
• 内码:传统教材中对字符在计算机内部存储与处理时所用编码的称呼,也称“机内码”;现代系统中宜进一步说明具体采用 UTF-8、UTF-16 或其他编码。
• 字形数据:用于显示和打印字符的点阵或轮廓信息,通常由字体文件提供,传统教材中也称为“字形码”。
点阵字体用像素网格表示字形。一个 16×16 的二值字形,其点阵本体需要 256 bit,即 32 B,不包含字符索引和其他附加信息。
![]()
专门为特定小字号设计的点阵字体可以保持清晰,但直接放大容易出现锯齿。
矢量字体主要用轮廓及相关信息描述字形,轮廓可由线段、曲线和控制点构成。显示和打印时,系统根据所需尺寸生成输出图像。
![]()
矢量字形可以按比例缩放,不会像固定点阵直接放大那样出现明显的像素块,但最终清晰度仍受输出分辨率和渲染方式影响。
字符编码解决文本的存储与交换问题。语言模型通常还会将文本切分为词元(Token),映射为词元编号,再转换为用于计算的向量。
词元可能对应一个字、一个词、词的一部分或字节片段。词元编号由分词器的词表等规则确定,与 Unicode 码点属于不同的编号体系。
3.2 声音的数字化
麦克风将声波转换为模拟电信号,ADC(Analog-to-Digital Converter,模数转换器)对经过适当处理的信号进行采样和量化,形成数字表示。
声音数字化的基本过程可概括为采样、量化和编码。
语音识别等人工智能应用以数字音频为基础,再根据模型要求对采样数据或由其提取的声学特征进行处理。
模拟音频信号的数字化过程
![]()
采样(Sampling)在时间上选取测量点。
量化(Quantization)把连续幅值近似到有限等级。
编码(Encoding)把量化等级按规则写成二进制数据。
采样率和量化位数是数字音频的重要参数,但音频质量还受到录音设备、噪声、处理方式和压缩编码等因素影响。
采样率(Sample Rate)表示每秒每声道的采样次数。44.1 kHz 表示每秒每声道采集 44,100 个样本。
根据奈奎斯特–香农采样定理(Nyquist–Shannon Sampling Theorem),对于最高频率为 fₘ 的带限信号,采样率应高于 2fₘ,以避免混叠。实际系统通常还需要在采样前进行低通滤波,限制输入信号的频率范围。
脉冲编码调制(Pulse-Code Modulation,PCM)通过对信号进行采样、量化和二进制编码,形成数字表示。
量化位数(Bit Depth)表示每个量化样本使用的位数。对于 16 位整数 PCM,每个样本有 2¹⁶=65,536 种可能的编码值。增加位数可以提供更细的量化等级,但不会自动改善已经录入的噪声或失真。
声道数表示独立音频通道数量。立体声通常包含左右两个声道,在其他条件一致时,未压缩数据量约为单声道的两倍。
示例:
一分钟的音频数据量:1,411,200×60÷8=10,584,000 B,约 10.584 MB以上仅计算音频采样数据,不包含文件头等附加信息。
WAV(Waveform Audio File Format,波形音频文件格式)是音频文件格式,常用来保存 PCM,但不能仅凭扩展名认定内部一定没有压缩。
MPEG(Moving Picture Experts Group,运动图像专家组)制定了多项音视频编码标准。MP3(MPEG-1 Audio Layer III,MPEG-1 音频第三层)是一种常见的有损音频压缩编码,利用信号特点和听觉特性减少数据,同时舍弃部分信息。
播放时,先读取和解码音频,再由 DAC(Digital-to-Analog Converter,数模转换器)等部件形成驱动扬声器的信号。
3.3 图像的数字化
声音数字化是在时间上采样,照片等位图图像的数字化则是在空间上采样,并将颜色或明暗信息量化为数值。
计算机中的视觉内容常用位图和矢量图形表示。
位图记录像素值,矢量图形记录几何形状及绘制属性。在图像识别等人工智能应用中,图像通常被解码为像素数组,再按模型要求调整尺寸、数值范围和通道顺序。
3.3.1 像素与分辨率
像素(Pixel)是位图图像在二维网格上的基本采样单元,每个像素对应一个位置及其灰度或颜色数值。
分辨率(Resolution)在此指图像横向和纵向的像素数量,例如 1920×1080,共有 2,073,600 个像素。
二值图像每个像素用 1 位表示,只区分两种状态。
二值图中的 0 和 1 各代表哪种颜色,需要看具体格式约定。
![]()
灰度图像表达明暗层次。
8 位灰度具有 256 个等级,常见约定为 0 表示黑、255 表示白。
![]()
3.3.2 颜色通道与色深
RGB 彩色图像使用三个通道(Red、Green、Blue,红、绿、蓝)表示颜色。
色深(Color Depth)描述颜色表示所用的位数,应区分“每通道位数”和“每像素颜色位数”。
在其他条件相同的情况下,增加位数可以提供更多可表示的颜色或明暗等级,但不一定扩大色域,也不能自动恢复原图中不存在的细节。
每通道 8 位时,每个通道有 256 种取值,共需 24 bit 表示一个像素,可组合出 2²⁴ 种代码。
![]()
常见约定中,(255,0,0) 表示红色,(0,0,0) 表示黑色,(255,255,255) 表示白色。
Alpha 通道用于描述不透明度。在常见的 8 位表示中,0 表示完全透明,255 表示完全不透明。
若在每像素 24 位的 RGB 数据之外增加 8 位 Alpha 通道,则每像素共需 32 bit,其中 24 位表示颜色,8 位表示不透明度。
示例:
即 6.2208 MB,约 5.93 MiB这里不包含文件头、元数据和行对齐等额外开销。压缩后的文件大小还取决于图像内容、编码方式和质量设置。
3.3.3 矢量图形
矢量图形不是保存每个像素,而是保存“怎样画”。
矢量图形用点、线、圆、曲线、多边形以及颜色、线宽、填充等属性描述图像。
![]()
显示时,软件根据几何描述进行栅格化,生成屏幕所需的像素。
因此,纯矢量内容缩放时可以重新计算轮廓,避免位图直接放大造成的像素块,但最终显示效果仍受屏幕分辨率和渲染方式限制。
3.4 视频的数字化
数字视频的画面可以理解为按时间顺序呈现的图像帧序列,但经过压缩后,不一定逐帧完整保存所有像素。视频文件或媒体流还可以包含音频、字幕和时间同步信息。
视频理解等人工智能任务不仅分析画面内容,还需要利用帧与帧之间的时间关系,有时也会结合声音和文本信息。
3.4.1 帧序列与时间
帧(Frame)是视频序列中的一幅画面。
![]()
帧率表示单位时间内呈现的帧数,常用单位为 fps(Frames per Second,每秒帧数)。30 fps 表示每秒 30 帧。
分辨率决定每帧的像素数量,帧率描述单位时间内的帧数。
对于恒定帧率视频,总帧数可由帧率与时长相乘计算;对于可变帧率视频,各帧的显示时间需要结合时间戳确定。
更高帧率通常有助于细致表达运动,但实际观感还受到曝光、压缩、显示设备和内容影响。
3.4.2 为什么可以压缩视频
同一帧相邻区域可能相似,形成空间冗余;
相邻帧之间许多部分保持不变,形成时间冗余;
符号出现频率不同,还可以采用更合适的代码减少编码冗余。
![]()
视频编码利用这些规律,记录预测与差异等信息,并根据质量要求进行压缩。解码时需要按编码规则重建。
3.4.3 编码标准与文件封装
编码格式(Coding Format)规定音视频数据的表示规则及解码方式;编码器(Encoder)是按这些规则生成编码数据的软件或硬件,解码器(Decoder)则负责恢复可播放的数据。
H.264 和 H.265 是视频编码标准编号,VP9 是视频编码名称,AV1(AOMedia Video 1,开放媒体联盟视频编码1)也是视频编码格式。它们约定视频如何表示和压缩。
封装(Container)格式像一个容器,把视频轨、音频轨、字幕、章节和时间同步信息组织在同一个文件中。
文件扩展名更多反映封装,不一定直接等于内部编码。
MP4(MPEG-4 Part 14,MPEG-4 第 14 部分)和 MKV(Matroska Video,Matroska 视频容器)属于常见封装名称。
QuickTime 的 MOV 容器、AVI(Audio Video Interleave,音频视频交错)和 WebM 也用于组织媒体内容。
一个文件能否播放,既与容器支持有关,也与内部编码支持有关。改文件扩展名并不会重新编码内部数据。
区分编码与封装后,还可以比较未压缩视频和压缩视频的数据量:前者可根据分辨率、帧率、每像素位数和时长估算,后者则通常根据平均码率和时长估算。
示例:
一分钟:186,624,000×60=11,197,440,000 B,约 11.20 GB,即 10.43 GiB。压缩后的大小主要取决于平均码率和时长,不能仅凭 H.264 或 H.265 等编码名称确定。例如,视频平均码率为 5 Mbit/s 时,一分钟的画面编码数据约为 37.5 MB,另需计入音频与封装开销。
3.4.4 从视频拍摄到播放的编解码流程
![]()
(1)拍摄输入
图像传感器将光信号转换为电信号,再经过模数转换和图像处理形成数字图像。麦克风将声波转换为模拟电信号,再经过采样、量化和编码形成数字音频。
(2)编码压缩
视频编码器可以利用帧内冗余,以及帧间预测等方法压缩画面;音频编码器按所选格式处理声音。标题和字幕可以作为文本或图像单独保存,也可以直接合成到视频画面中;平台评论通常由平台系统另行存储。
(3)封装传输
编码后的视频、音频以及可选的字幕和时间同步信息,被组织到文件或流媒体片段中。文件可以保存在本地;需要在线传输时,媒体数据再通过相应网络协议传送到接收设备。
(4)解码输出
播放设备进行解封装和解码,将重建的画面交给显示系统,将解码后的音频数据交给音频输出系统;后者通常经过数模转换和放大,驱动扬声器发声。
小结
计算机以二进制表示数据,不同编码规则决定数值范围、精度与存储方式。文字、声音、图像和视频经过编码与预处理,才能成为人工智能模型可运算的输入。理解这些基础,有助于认识数据质量、计算效率与模型效果之间的关系。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.