数据与文字的表示方法

目录

1. 数据格式

1. 文本文件格式

2. 二进制文件格式

3. 数据库格式

4. 压缩格式

2. 数字机器码表示

整数表示

浮点数表示

3. 字符与数组的表示方法

1. ASCII(美国信息交换标准代码)

2. 扩展ASCII

3. Unicode

4. UTF-8(8 位 Unicode转换格式)

5. UTF-16(16 位 Unicode转换格式)

6. UTF-32(32 位 Unicode转换格式)

数组的表示方法

1. 一维数组

2. 多维数组

4. 汉字的表示方法

1. GB2312

2. GBK

3. GB18030

4. Big5

5. Unicode

示例编码比较

5. 证书

1. 奇偶校验

2. 循环冗余校验(CRC)

3. 校验和

4. 哈希函数


        在计算机世界中,数据和文字的表示方法是信息处理的基础。不同的数据、数值的机器编码、字符与字符串的表示方法以及汉字的表示方法各自都有其独特的方式和标准。将详细讨论这些主题,并简要介绍单词的用法。

1. 数据格式

数据格式是指数据在计算机系统中存储、处理和传输的方式,不同的数据格式适用于不同的用途和需求。以下是几种常见的数据格式及其特点和用途:

1. 文本文件格式

文本文件格式用于存储文本数据,便于人读取和编辑。这些文件可以通过简单的文本编辑器来查看和修改。

  • TXT:纯文本格式,不包含任何格式信息。

    • 优点:简单、通用。
    • 用途:存储简单的文本信息,如日志文件、README文件等。
  • CSV(Comma-Separated Values):逗号分隔值格式,用于存储表格数据,每行表示一条记录,列与列之间用逗号分隔。

    • 优点:易于导入和导出到电子表格软件,如Excel。
    • 用途:数据交换、存储表格数据。
  • JSON(JavaScript Object Notation):一种轻量级的数据交换格式,基于键值对的结构。

    • 优点:易于读取和写入,适合网络传输。
    • 用途:Web API 数据交换、配置文件。
  • XML(eXtensible Markup Language):一种标记语言,用于表示结构化数据。

    • 优点:自描述性强,支持复杂的数据结构。
    • 用途:配置文件、数据交换、文档存储。

示例

{"name": "John Doe","age": 30,"city": "New York"
}

 

2. 二进制文件格式

二进制文件格式用于存储以二进制编码的数据,通常由特定的应用程序来处理和解释。二进制数据格式效率高,但不易于人直接读取和修改。

  • EXE:可执行文件格式,包含程序代码、数据和运行时所需的其他信息。

    • 用途:存储可执行程序。
  • DLL(Dynamic Link Library):动态链接库文件,包含可以被多个程序共享的代码和数据。

    • 用途:存储可重用的代码库。
  • JPG(JPEG):图像文件格式,使用有损压缩技术。

    • 用途:存储照片和图像。
  • MP3:音频文件格式,使用有损压缩技术。

    • 用途:存储音频文件,如音乐和语音记录。

示例my_program.exe 是一个二进制可执行文件,只能通过操作系统运行,而不能直接用文本编辑器查看。

 

3. 数据库格式

数据库格式用于存储和查询大量数据,通常通过数据库管理系统(DBMS)进行管理。

  • SQL数据库:基于关系模型的数据库,如MySQL、PostgreSQL、SQLite。

    • 特点:使用SQL(结构化查询语言)进行数据查询和操作。
    • 用途:存储和管理结构化数据,如用户信息、交易记录等。
  • NoSQL数据库:非关系型数据库,如MongoDB、Cassandra、Redis。

    • 特点:支持灵活的数据模型,如文档、键值对、列族、图数据。
    • 用途:处理大规模数据、实时数据分析、复杂的数据结构。

示例

CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100),email VARCHAR(100)
);

 

4. 压缩格式

压缩格式用于减少文件大小,以提高存储效率和传输速度。压缩文件通常需要解压缩才能使用。

  • ZIP:一种常见的压缩文件格式,支持无损压缩。

    • 用途:压缩和打包多个文件和文件夹。
  • RAR:一种专有的压缩文件格式,通常比ZIP提供更好的压缩率。

    • 用途:压缩和打包文件。
  • GZ(Gzip):一种基于GNU压缩算法的文件压缩格式,通常用于Unix和Linux系统。

    • 用途:压缩单个文件。 

示例archive.zip 文件包含多个压缩的文件和文件夹,可以通过解压缩工具提取其内容。

 

2. 数字机器码表示

在计算机内部,所有的数据,包括数字,都是以二进制形式存储和处理的。二进制只包含 0 和 1 两种状态,可以通过电路的开和关两种状态来表示,方便计算机进行存储和运算。

为了表示不同类型的数字,计算机采用了不同的二进制编码方式,主要包括整数表示和浮点数表示两种。

整数表示

整数表示使用固定长度的二进制数来表示整数,常见的长度有 8 位、16 位、32 位和 64 位。根据是否有符号位,整数表示又分为无符号整数和有符号整数。

  1. 无符号整数

    • 定义:没有符号位,所有位都用来表示数值大小。
    • 范围:以 8 位为例,无符号整数的范围是 0 到 255 (2^8 - 1)。
    • 示例:8 位无符号整数 00001010 表示十进制的 10。
  2. 有符号整数

    • 定义:最高位作为符号位,0 表示正数,1 表示负数。
    • 表示方法:通常采用补码表示法,方便进行加减运算。
    • 范围:以 8 位为例,有符号整数的范围是 -128 到 127。
    • 示例
      • 8 位补码 11111111 表示十进制的 -1。
      • 8 位补码 10000000 表示十进制的 -128。

补码的计算方法:

  • 正数的补码与其原码相同。
  • 负数的补码是将其原码除符号位外按位取反,然后加 1。
浮点数表示

浮点数表示用于表示带有小数部分的数字,它采用 IEEE 754 标准进行编码,包括单精度浮点数(32 位)和双精度浮点数(64 位)两种格式。

IEEE 754 浮点数格式

  • 符号位(Sign Bit): 最高位,0 表示正数,1 表示负数。
  • 指数部分(Exponent): 用于表示数字的幂次,采用移码表示法。
  • 尾数部分(Mantissa/Fraction): 用于表示数字的有效数字,通常省略最高位的 1。

示例

  • 单精度浮点数 0 10000001 01000000000000000000000 表示十进制的 5.0。

    • 符号位:0 表示正数。
    • 指数部分:10000001 表示 129,减去偏移量 127 后得到 2,即 2 的 2 次方。
    • 尾数部分:01000000000000000000000 转换为十进制为 0.5,加上省略的最高位 1 后得到 1.5。

    因此,该浮点数表示的值为 1.5 * 2^2 = 6.0。

3. 字符与数组的表示方法

字符和字符串在计算机中通过字符编码表示。字符编码是将字符与特定的二进制数值相对应的规则。以下是常见的字符编码标准及其详细说明:

1. ASCII(美国信息交换标准代码)

ASCII 是一种早期的字符编码标准,使用 7 位二进制数表示 128 个字符,包括英文字母、数字和常用符号。每个字符在 ASCII 表中的对应二进制数称为其 ASCII 码。

  • 范围:0 到 127
  • 示例
    • 字符 A 的 ASCII 码为 65,二进制表示为 01000001
    • 字符 a 的 ASCII 码为 97,二进制表示为 01100001

2. 扩展ASCII

扩展ASCII 使用 8 位二进制数表示 256 个字符,增加了更多符号和特定语言字符。

  • 范围:0 到 255
  • 特性:包含了原始 ASCII 表中的字符以及额外的符号、图形字符和外语字符。
3. Unicode

Unicode 是为了解决多语言和多字符集问题而提出的标准,涉及全球几乎所有的文字和符号。Unicode 可以采用不同的编码方式。

  • 特性:能够表示几乎所有的现代和古代文字、符号及标点。
  • 示例
    • 字符 A 的 Unicode 码为 U+0041
    • 汉字  的 Unicode 码为 U+6C49

4. UTF-8(8 位 Unicode转换格式)

UTF-8 是一种可变长度编码,使用 1 到 4 个字节表示一个字符。它兼容 ASCII,即 ASCII 码在 UTF-8 中的表示与原 ASCII 表完全相同。

  • 特性:UTF-8 中,一个字符所占用的字节数由其二进制前缀决定。
    • 1 字节:0xxxxxxx
    • 2 字节:110xxxxx 10xxxxxx
    • 3 字节:1110xxxx 10xxxxxx 10xxxxxx
    • 4 字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  • 示例
    • 字符 A 的 UTF-8 编码为 01000001
    • 汉字  的 UTF-8 编码为 11100110 10100010 10011100

5. UTF-16(16 位 Unicode转换格式)

UTF-16 使用 2 或 4 个字节表示一个字符。基本平面字符使用 2 个字节表示,辅助平面字符使用 4 个字节表示。

  • 特性:UTF-16 常用于内部处理和存储,如 Windows 和 Java 的内部表示方式。
  • 示例
    • 字符 A 的 UTF-16 编码为 0041
    • 汉字  的 UTF-16 编码为 6C49

6. UTF-32(32 位 Unicode转换格式)

UTF-32 使用固定的 4 个字节表示一个字符,每个字符都直接对应其 Unicode 码点。这种表示方式适合需要快速访问的场景。

  • 特性:由于每个字符固定占用 4 个字节,UTF-32 编码可以直接按索引访问,但在存储空间上不如 UTF-8 和 UTF-16 高效。
  • 示例
    • 字符 A 的 UTF-32 编码为 00000041
    • 汉字  的 UTF-32 编码为 00006C49

数组的表示方法

在编程中,数组是用于存储同类型元素的集合。数组可以是一维的,也可以是多维的。数组在内存中的表示依赖于具体的编程语言和实现方式。

1. 一维数组

一维数组是一组线性排列的同类型元素。它们通常通过索引进行访问,索引从 0 开始。

  • 声明(伪代码):
  array = [element1, element2, element3, ...]

 

  • 访问
  element = array[index]

 

  • 示例
  array = [1, 2, 3, 4, 5]element = array[2]  # 结果为 3
2. 多维数组

多维数组是数组的数组,可以是二维、三维或更高维度。常见的多维数组是二维数组,类似于矩阵。

  • 声明(伪代码):

 

  array = [[element11, element12], [element21, element22], ...]
  • 访问

 

  element = array[row_index][column_index]

 

  • 示例
  array = [[1, 2], [3, 4], [5, 6]]element = array[1][0]  # 结果为 3

4. 汉字的表示方法

汉字是中文的书写字体,具有复杂的形态和丰富的文化内涵。由于汉字数量庞大且字形复杂,在计算机系统中需要使用特定的编码方式来实现汉字的存储、处理和传输。以下是几种常用的汉字编码方式及其特点:

1. GB2312

  • 定义:GB2312是早期中文编码标准,全称是《信息交换用汉字编码字符集 基本集》。
  • 内容:包含6763个常用汉字和682个其他符号。
  • 编码方式:使用双字节编码,每个汉字占用两个字节(16位)。
  • 优点:适合早期中文处理需求,应用广泛。
  • 缺点:覆盖范围有限,不包含生僻字和扩展字符。

示例:汉字“汉”的GB2312编码为BABA

2. GBK

  • 定义:GBK是GB2312的扩展,全称是《汉字内码扩展规范》。
  • 内容:包含更多汉字和符号,向下兼容GB2312。
  • 编码方式:使用双字节编码,每个汉字占用两个字节(16位)。
  • 优点:扩展了汉字和符号的范围,支持更多字符。
  • 缺点:与国际标准的兼容性较差。

示例:汉字“汉”的GBK编码为BABA

3. GB18030

  • 定义:GB18030是中国国家标准,全称是《信息交换用汉字编码字符集》。
  • 内容:包含所有Unicode汉字,兼容GBK和GB2312。
  • 编码方式:使用双字节编码和四字节编码混合方式,具体编码长度视字符而定。
  • 优点:全面覆盖Unicode字符集,支持所有汉字。
  • 缺点:编码复杂度较高,存储空间需求较大。

示例:汉字“汉”的GB18030编码为BABA

4. Big5

  • 定义:Big5是台湾和香港地区常用的编码标准。
  • 内容:包含常用汉字和繁体字,广泛应用于台湾和香港地区。
  • 编码方式:使用双字节编码,每个汉字占用两个字节(16位)。
  • 优点:适合繁体字处理需求,应用广泛。
  • 缺点:与国际标准的兼容性较差,不包含简体字。

示例:汉字“汉”的Big5编码为A7DA

5. Unicode

  • 定义:Unicode是国际标准字符编码系统,旨在覆盖全球所有书写系统。
  • 内容:包含所有汉字以及其他语言字符,支持全球通用的字符集。
  • 编码方式:Unicode包括多种编码形式,如UTF-8、UTF-16和UTF-32。常用的UTF-8编码使用可变长字节进行表示,每个汉字占用3字节或4字节。
  • 优点:全球通用,支持多语言字符集,与现代操作系统和应用程序兼容性好。
  • 缺点:编码冗长,存储和传输效率相对较低。

示例:汉字“汉”的Unicode编码为U+6C49。在UTF-8编码中,表示为E6B18A

示例编码比较
汉字 "汉" 的不同编码表示:
- GB2312: BABA
- GBK: BABA
- GB18030: BABA
- Big5: A7DA
- Unicode (UTF-8): E6B18A

5. 证书

校验码是一种用于检测数据在传输或存储过程中是否发生错误的方法。它通过附加在数据末尾的校验信息来验证数据的完整性和正确性。常见的校验码方法包括奇偶校验、循环冗余校验(CRC)、校验和和哈希函数。校验码的使用能够有效地提高数据传输和存储的可靠性,确保数据在传输过程中未被篡改或损坏。

1. 奇偶校验

奇偶校验是一种简单的错误检测方法,通过附加一个比特位,使得数据中1的数量保持奇数或偶数状态。

  • 奇校验:确保数据中1的数量为奇数。如果当前1的数量为偶数,则附加一个1,否则附加一个0。
  • 偶校验:确保数据中1的数量为偶数。如果当前1的数量为奇数,则附加一个1,否则附加一个0。

示例:对数据 1010110 进行奇校验,结果为 10101101

function oddParity(data) {count = countOnes(data);if (count % 2 == 0) {return data + "1";} else {return data + "0";}
}
2. 循环冗余校验(CRC)

循环冗余校验(CRC)是一种更复杂的错误检测方法,通过对数据块进行多项式除法生成校验码。CRC广泛应用于网络通信和存储设备中。

  • 生成多项式:选择一个生成多项式(如 CRC-32 使用的多项式 0x04C11DB7)。
  • 计算过程:对数据进行二进制多项式除法,余数即为CRC校验码。

示例:对数据 1011001 进行CRC计算,生成校验码。

 

function crc(data, polynomial) {paddedData = data + "0" * (length(polynomial) - 1);remainder = divide(paddedData, polynomial);return remainder;
}
3. 校验和

校验和是一种将数据分块后求和的错误检测方法,结果作为校验码。常用于简单的网络协议。

  • 计算方法:将数据分成固定长度的块,对所有块进行加法运算,取结果的低位作为校验和。

示例:对数据 10101010 11001100 计算校验和。

 

function checksum(data) {sum = 0;for (block in data) {sum += block;}return sum & 0xFF;  // 取低位作为校验和
}
4. 哈希函数

哈希函数是一种通过哈希算法生成固定长度散列值的方法,用于数据完整性校验和验证。

  • 特点:哈希值是固定长度的,且对于不同输入,理想情况下,哈希值应不同。
  • 应用:用于数据完整性校验、数字签名、密码学等。

示例:使用SHA-256算法计算数据的哈希值。

 

function hash(data) {return sha256(data);
}

 

        综上所述,理解和掌握数据与文字的表示方法对于计算机科学和信息技术领域的从业者至关重要。希望对数据、机器编码、字符与字符串的表示方法、汉字的表示方法以及密码的表示方法有一个清晰的认识。

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

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

相关文章

面试相关-接口测试常问的问题

1.为什么要做接口测试 (1)现在大多系统都是前后端分离的项目,前端和后端的进度可能不一样,那为了尽早的进入测试,前端界面没有开发完成的情况下,只要后端的接口开发完了,就可以提前做接口测试了; (2)基于安全考虑,只依赖前端进行限制,已经完全不满足系统的安全性…

Power Pivot——常用DAX 函数

常用DAX 函数 以下这些函数是 DAX 中最常用的一部分,通过熟练掌握这些函数,你可以有效地进行数据分析和建模。 聚合函数 (Aggregation Functions) SUM() 用途:对指定列中的所有数值求和。 语法:SUM() 示例:SUM(Sale…

重生之我要学后端01--后端语言选择和对应框架选择

编程语言 后端开发通常需要掌握至少一种编程语言。以下几种语言在后端开发中非常流行: Java:广泛用于企业级应用程序。Python:因其易学性和强大的库支持(如Django和Flask)而受欢迎。Node.js(JavaScript&a…

电商卖家怎么快速采集复制1688全店宝贝到自己店铺?淘/猫/拼/抖都适用!

1688上面的货源品类丰富,很多卖家都是在这里找厂家,当我们找好厂家后,怎么将厂家店铺里所有宝贝都复制到自己店铺呢? 虽然1688平台本身支持铺货到其他平台,但一个个铺货太耗费时间了。 阿里巴巴中国站获得1688商品详…

【AI大模型RAG】深入探索检索增强生成(RAG)技术

目录 1. 引言2. RAG技术概述2.1 RAG技术的定义2.2 RAG技术的工作原理2.3 RAG技术的优势2.4 RAG技术的应用场景 3. RAG的工作流程3.1 输入处理3.2 索引建立3.3 信息检索3.4 文档生成3.5 融合与优化 4. RAG范式的演变4.1 初级 RAG 模型4.2 高级 RAG 模型4.3 模块化 RAG 模型优化技…

会计报表分析

目录 一. 会计报表的种类 \quad 一. 会计报表的种类 \quad 反应财务状况的是资产负债表 反应经营成果的是利润表 有时间点的就是静态表 动态表就是有一个区间的, 比如一年, 一个季度等

探索这些有趣的API,让你的应用与众不同

在这个由数据驱动的时代,我们每天都在与各种应用程序和服务互动,却很少意识到它们背后的技术奇迹。API,作为这些互动的幕后英雄,不仅简化了开发过程,还扩展了技术的边界。有趣的API,特别是那些能够激发创新…

QT 如何储存多种数据类型(QVariant )

QVariant 是 Qt 框架中用于存储各种数据类型的类。它提供了一个强大的类型系统,允许你在运行时存储和检索多种类型的数据,而不需要在编译时确定类型。QVariant 的主要优点在于它的灵活性和通用性,这使得它在 Qt 的很多组件和机制中都被广泛使…

时间戳是什么,如何使用时间戳

时间戳(Timestamp)是表示特定时间点的数值,通常以自1970年1月1日00:00:00 UTC(协调世界时)以来的秒数或毫秒数来表示。这个时间点被称为Unix纪元(Unix epoch)。时间戳广泛用于计算机系统中&…

数据结构教材关于C/C++的研究

变量 指针 引用 变量 普通变量表示一个内存空间,直接printf是内存空间里的值 结构体 定义一个结构体类型变量为什么必须用指针? 因此无法确定结构体需要多少空间,改用指针可以解决这个问题,因为指针的大小是固定的 指针 指…

HTTP协议和Nginx

一、HTTP协议和Nginx 1.套接字Socket 套接字Socket是进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI出现于1983年BSD4.2实现在建立通信连接的每一端,进程间的传输…

binlog与redolog的区别

binlog与redolog的区别 在数据库管理系统中,日志系统扮演着至关重要的角色,它记录了数据库的所有更改,从而确保在发生故障时能够恢复数据。其中,binlog(二进制日志)和redolog(重做日志&#xf…

Eureka是什么?它是如何工作的?

Eureka是Netflix开发的服务发现框架,现在是Spring Cloud生态系统的一部分。它主要用于AWS云平台,用来定位服务,以实现中间层服务器的负载均衡和故障转移。在微服务架构中,服务发现是关键的一环,它允许服务和服务彼此发…

理解MySQL核心技术:外键的概念、作用和应用实例

引言 在数据库管理系统(DBMS)中,外键(Foreign Key)是维持数据一致性和实现数据完整性的重要工具。本文将详细介绍MySQL外键的基本概念、作用,以及相关的操作指南和应用实例,帮助读者掌握并灵活…

深入了解PHP的If...Else语句

PHP是目前最流行的服务器端编程语言之一,用于开发动态和交互式网站。在PHP编程中,控制结构是非常重要的概念,它们决定了代码的执行流程。其中,if…else语句是最常用的控制结构之一。本文将深入介绍PHP中的if…else语句&#xff0c…

【Android】怎么创建一个隐藏图标的应用

项目需求 创建一个不带启动图标的app 项目实现 1.低版本上 在低版本的Android系统上面&#xff0c;可以简单使用这个,但是现在很多版本都不适用了。 <activityandroid:name".MainActivity"><intent-filter><action android:name"android.int…

算子级血缘和血缘查询管理

数据链路 血缘关系 应用场景&#xff1a;数据资产&#xff0c;数据开发&#xff0c;数据治理&#xff0c;数据安全等等 &#xff08;绿色箭头上面是数据治理&#xff09; 场景&#xff1a; 数据链路的高效盘点与理解 数仓模型的长效优化机制 风险影响的及时全面分析 重复…

linux kswapd0进程cpu占用一直居高不下

kswapd0 是 Linux 内核中的一个进程&#xff0c;负责管理虚拟内存和交换&#xff08;swap&#xff09;操作。当该进程的 CPU 占用率居高不下时&#xff0c;通常表示系统正在频繁地进行交换操作&#xff0c;可能由于内存不足或内存使用不合理。 可能原因 内存不足&#xff1a; …

Android Studio无法正确引入包内存在的类

Android Studio 无法识别同一个 package 里的类&#xff0c;显示为红色&#xff0c;但是 compile 没有问题。 重启&#xff0c;rebuild,clean都没有用。 多半是因为 Android Studio 之前发生了错误&#xff0c;某些 setting 出了问题。 解决方法如下&#xff1a; 点击菜单中的…

6月27日-四象限法则

四象限法则&#xff0c;又称为艾森豪威尔矩阵&#xff08;Eisenhower Matrix&#xff09;&#xff0c;是一种时间管理和任务优先级排序的方法。它将任务分为四个象限&#xff0c;帮助个人识别哪些任务最重要&#xff0c;哪些可以推迟或委托&#xff0c;以及哪些可以完全忽略。以…