数据与文字的表示方法

目录

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.mfbz.cn/a/735046.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【单片机毕业设计选题24024】-房间自动除湿控制系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式。自动模式下如果获取到湿度 值大于设定的湿度值则自动打开风扇,手动模式下手动开关风扇。 系统上电后显示“欢迎使用除湿控制系统请稍后”,两秒钟后进入主页面显示。 第一行显示系统…

[FreeRTOS 功能应用] 互斥访问与回环队列 功能应用

文章目录 一、基础知识点二、代码讲解三、结果演示四、代码下载 一、基础知识点 [FreeRTOS 基础知识] 互斥访问与回环队列 概念 [FreeRTOS 内部实现] 互斥访问与回环队列 [FreeRTOS 内部实现] 创建任务 xTaskCreate函数解析 本实验是基于STM32F103开发移植FreeRTOS实时操作系…

A bug‘s life 虫子的生活(带权并查集)

题目链接: 2492 -- A Bugs Life (poj.org) 题目描述: 思路: 带权并查集,处理方法基本与食物链(http://t.csdnimg.cn/fSnRr)相同,没什么思维创新 但是一开始WA了几次,有些细节没有注意好,还是需要静下心来,好好分析问…

LabVIEW程序闪退问题

LabVIEW程序出现闪退问题可能源于多个方面,包括软件兼容性、内存管理、代码质量、硬件兼容性和环境因素。本文将从这些角度进行详细分析,探讨可能的原因和解决方案,并提供预防措施,以帮助用户避免和解决LabVIEW程序闪退的问题。 1…

数据结构与算法笔记:基础篇 - 初始动态规划:如何巧妙解决“双十一”购物时的凑单问题?

概述 淘宝的 “双十一” 购物节有各种促销活动,比如 “满 200 元减 50元”。假设你女朋友购物车中有 n 个(n > 100)想买的商品,它希望从里面选几个,在凑够满减条件的前提下,让选出来的商品价格总和最长…

汉语拼音字母表 (声母表和韵母表)

汉语拼音字母表 [声母表和韵母表] 1. 汉语拼音声母表2. 汉语拼音韵母表References 1. 汉语拼音声母表 声母是韵母前的辅音,与韵母一起构成一个完整的音节。 辅音是发声时,气流在口腔中受到各种阻碍所产生的声音,发音的过程即是气流受阻和克…

Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!

代码仓库 会同步代码到 GitHub https://github.com/turbo-duck/flink-demo 当前章节 继续上一节的内容:https://blog.csdn.net/w776341482/article/details/139875037 上一节中,我们需要使用 nc 或者 telnet 等工具来模拟 Socket 流。这节我们写一个 …

【python】linux下安装chromedriver

首先,安装selenium模块 pip3 install selenium查看系统内chrome版本: google-chrome --version 根据谷歌浏览器版本下载对应的浏览器驱动版本: wget https://storage.googleapis.com/chrome-for-testing-public/126.0.6478.114/linux64/ch…

2024年6月大众点评成都餐饮店铺POI分析22万家

2024年6月大众点评成都餐饮店铺POI共有221002家 店铺POI点位示例: 店铺id CACuqlcUQApLA7Ki 店铺名称 峨眉山豆腐脑(百吉街店) 十分制服务评分 7.3 十分制环境评分 7.5 十分制划算评分 7.1 人均价格 18 评价数量 38 店铺地址 百吉街86号1层 大类 美食 中类…

Day7 —— 大数据技术之Hive

Hive快速入门系列 Hive的概述什么是Hive?使用Hive的原因 Hive架构Hive安装Hive配置文件修改启动Hive以命令行方式启动(在$HIVE_HOME/bin目录下)以JDBC连接启动(beeline方式连接) Hive基本操作Hive数据库操作Hive表操作…

天气冷电脑不能启动找不到硬盘

https://diy.zol.com.cn/2004/0611/101994.shtml

为什么 JakeWharton 建议:App 只要用到一个 Activity ?

我们来看看这条回答都提到了哪些内容,对 Activity 和 Fragment 之间的爱恨情仇有何独到的见解,凭什么能得到 JakeWharton 本尊的青睐有加。 因为 Activity 是一个程序入口。你可以将其视为 app 的一个 main 函数。站在用户的立场上,通常你进入…

ARM功耗管理软件之WFIWFE

安全之安全(security)博客目录导读 思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS? ARM功耗管理精讲与实战汇总参见:Arm功耗管理精讲与实战

IO模型详解

阻塞IO模型 假设应用程序的进程发起IO调用,但是如果内核的数据还没准备好的话,那应用程序进程就一直在阻塞等待,一直等到内核数据准备好了,从内核拷贝到用户空间,才返回成功提示,此次IO操作,称…

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…

基于Java的农机电招平台系统

你好呀,我是计算机学姐码农小野!如果你对农机电招平台系统感兴趣或有相关开发需求,可以私信联系我。 开发语言 Java 数据库 MySQL 技术 B/S结构,SpringBoot框架 工具 Eclipse,Navicat,Tomcat8.0 系…

24年下半年各省自考报名时间汇总

24年下半年各省自考报名时间汇总

C语言 | Leetcode C语言题解之第174题地下城游戏

题目: 题解: int calculateMinimumHP(int** dungeon, int dungeonSize, int* dungeonColSize) {int n dungeonSize, m dungeonColSize[0];int dp[n 1][m 1];memset(dp, 0x3f, sizeof(dp));dp[n][m - 1] dp[n - 1][m] 1;for (int i n - 1; i >…

利用JAVA语言调用GLM-4接口实战指南

一、什么是API接口 API(Application Programming Interface,应用程序编程接口)是一种软件接口,它定义了不同应用程序之间如何相互通信、交互。API接口分为很多种,常见的有Web API,数据库API,操…

【非常实验】如何在移动设备上运行 Docker?

本章就从在 DevOps 中最基本但也是最强大的工具 Docker 开始。最近,我在尝试更多Termux的可能性,于是就想着试试Docker适不适合arm架构。 我用的是天玑9000芯片,而不是高通,所以显示不出来 Qualcomm。所以我决定从在手机上运行 docker 开始,但这可能吗?让我们一起来看看吧…