2.1 数据文字的表示方式



2023/6/9 补充

学习目标

当学习数据与文件的表示方法时,以下是一些具体的步骤和技巧:

1. 学习数据表示方法:

- 了解不同进制的表示方法:学习二进制、十进制和十六进制等进制表示方法,并了解它们在计算机中的应用。

- 熟悉整数和浮点数的表示:了解整数和浮点数在计算机内部的二进制表示方式,包括有符号数和无符号数的区别。

- 掌握字符和字符串的表示:学习字符编码标准(如ASCII、UTF-8等)以及字符串的表示和操作方法。

2. 学习文件表示方法:

- 了解文件的结构:学习文件的基本组成部分,如文件头、数据区和文件尾等,并了解不同类型文件的结构差异。

- 掌握常见文件格式:学习常见的文件格式,如文本文件(如.txt、.csv)、图像文件(如.jpg、.png)、音频文件(如.mp3、.wav)和视频文件(如.mp4、.avi)等的表示方法。

- 理解文件压缩和编码:学习文件压缩和编码算法,如ZIP压缩、Huffman编码等,以减小文件大小或提高数据的传输效率。

3. 使用合适的工具和库:

- 学习编程语言:选择一门常用的编程语言,如Python或Java,并学习其相关的数据处理和文件操作功能。

- 使用数据处理库:对于数据表示和处理,学习使用专门的库,如NumPy、Pandas或TensorFlow等,以便进行数据分析、处理和建模。

- 学习图像处理库:如果你关注图像表示和处理,学习使用图像处理库,如OpenCV或PIL(Python Imaging Library)等。

4. 实践项目:

- 挑战自己处理实际数据和文件的项目,例如使用Python读取和解析文本文件、从图像中提取特征、处理音频信号或分析大型数据集等。

- 参与开源项目:加入开源项目或数据科学竞赛,与其他人合作解决实际问题,并应用所学的数据和文件表示方法。

5. 深入学习和扩展知识:

- 阅读相关文献和书籍:通过阅读教材、学术论文、博客文章等,进一步了解数据与文件表示方法的高级概念和技术。

- 参与在线课程和培训:参加在线课程,如Coursera、edX或Udemy等平台上的数据科学和计算机科学课程,以加强学习并与其他学习者互动。

- 探索新技术和趋势:保持对新技术和趋势的关注,如大数据处理、人工智能和机器学习等领域的最新发展。

这些步骤和技巧将帮助你系统地学习数据与文件的表示方法,并逐渐掌握相关的概念和技能。记住,实践和不断学习是提升技能的关键。


思维导图:

2.1数值与编码

本节目的:

2.1.1 数据格式

  1. 什么是数据格式?

数据格式是指将数据组织和表示的方式。它定义了数据的结构、存储方式和解释规则,使得计算机系统能够正确地读取、理解和处理数据。

数据格式可以分为多种类型,每种类型都有其特定的规范和约定。以下是一些常见的数据格式:

1. 文本数据格式:

- 纯文本:纯文本格式是最简单的数据格式之一,数据以普通文本的形式表示,通常使用ASCII或UTF-8编码。例如,CSV(逗号分隔值)和JSON(JavaScript对象表示)就是基于文本的格式。

2. 二进制数据格式:

- 位级格式:在位级格式中,数据以二进制位(0和1)的序列进行表示。例如,图像文件和音频文件通常使用二进制格式存储,如JPEG、PNG、MP3等。

- 字节流格式:字节流格式将数据划分为字节序列,每个字节可以表示一个字符或一个数值。常见的字节流格式包括字节码文件(如Java字节码文件)和二进制文件(如EXE文件)。

3. 结构化数据格式:

- 表格型数据格式:表格型数据格式以行和列的形式组织数据,例如数据库中的表格或电子表格文件(如Excel)。这些格式通常支持数据类型、列标题和行索引。

- XML(可扩展标记语言):XML是一种标记语言,用于描述数据的结构和内容。它使用自定义的标签来标记数据元素,具有良好的可扩展性和跨平台的特性。

- YAML(YAML Ain't Markup Language):YAML是一种人类可读的数据序列化格式,用于表示结构化数据。它以缩进和分行的方式表示数据的层次结构。

4. 图形数据格式:

- 矢量图形格式:矢量图形格式使用数学公式来描述图形,而不是像素点的集合。它们可以缩放而不失真,常见的矢量图形格式包括SVG(可缩放矢量图形)和AI(Adobe Illustrator)文件。

- 栅格图像格式:栅格图像格式使用像素矩阵来表示图像,每个像素都有自己的颜色值。常见的栅格图像格式包括JPEG、PNG、BMP等。

5. 多媒体数据格式:

- 音频格式:音频格式用于存储和传输音频数据,例如MP3、WAV、AAC等。

- 视频格式:视频格式用于存储和传输视频数据,例如MP4、AVI、MOV等。

这只是一小部分常见的数据格式,实际上还有许多其他格式,如GIS数据格式、日志文件格式等,每种格式都有其特定的应用场景和使用方式。选择合适的数据格式取决于数据的性质、用途和系统需求。

2.引入:

在选择计算机的数的表示方式时,需要考虑以下几个因素:①要表示的数的类型(小数、整数、实数和复数);②可能的数值范围;③数值精确度;④数据存储和处理所需要的硬件代价。计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。一般来说,定点格式容许的数值范围有限,要求的处理硬件比较简单。而浮点格式容许的数值范围很大,要求的处理硬件比较复杂。给我讲解这段话我能得到什么

我的理解:

从这段话中,你可以得到以下几点信息:

1. 数的类型:计算机在选择数据表示方式时需要考虑要表示的数的类型,包括小数、整数、实数和复数。不同类型的数可能需要不同的表示方式。

2. 数值范围:选择数据表示方式时需要考虑可能的数值范围。定点格式容许的数值范围有限,而浮点格式容许的数值范围很大。因此,根据数值范围的大小选择适当的表示方式。

3. 数值精确度:不同的数据表示方式可能具有不同的数值精确度。浮点格式通常能够提供更高的精确度,而定点格式可能会有一定的舍入误差。

4. 硬件代价:选择数据表示方式还需要考虑数据存储和处理所需的硬件代价。一般而言,定点格式所需的处理硬件相对简单,而浮点格式所需的处理硬件较为复杂。

综上所述,选择适当的数据表示方式需要考虑数的类型、数值范围、数值精确度以及硬件代价等因素。定点格式适合表示范围有限且硬件要求简单的数,而浮点格式适合表示范围广泛且需要高精确度的数。

  1. 定点数的表示方法

  1. 纯小数表示法:纯小数表示法是一种定点表示方法,用于表示小数部分。在纯小数表示法中,小数点的位置是固定的,没有整数部分。例如,考虑一个8位的二进制表示法,其中6位用于表示小数部分。数值范围是从0到1,可以表示为0.000000到0.111111。

  1. 纯整数表示法:纯整数表示法是一种定点表示方法,用于表示整数部分。在纯整数表示法中,小数点的位置是固定的,没有小数部分。例如,考虑一个8位的二进制表示法,其中8位都用于表示整数部分。数值范围是从-128到127,可以表示为-10000000到01111111。

  1. 浮点数表示法:浮点数表示法是一种用于表示实数的方法,其中数值以科学计数法的形式表示,包括尾数和指数。浮点数表示法允许更大的数值范围和更高的精度。在计算机中,广泛使用IEEE 754标准定义的浮点数表示法。常见的浮点数格式有单精度(32位)和双精度(64位)。

在IEEE 754浮点数表示法中,数值由三个部分组成:符号位、指数位和尾数位。符号位表示数值的正负,指数位表示数值的放大倍数,尾数位表示有效数字。这种表示法可以表示整数和小数,并允许在一定范围内进行浮点运算。

需要注意的是,浮点数表示法在处理一些小数时可能会引入舍入误差,因为无法精确地表示某些十进制小数。在对精度要求较高的应用中,需要注意浮点数的精度限制和可能的舍入误差。

2.1.2 数的机器码表示

前面介绍了数的小数点表示,下面还需要解決数的机器码表示问题。

在计算机中对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算

探作现”如参加,会给运算操作带 来什 么颩响呢?为了 买善地处理好这些向题,就产生了把

行号位和数值位一起编码来表不相应的数的各种表不方法,如原码、补码、反码、移码。

为了区别一般书写表示的数和机器中这些给码表示的数,通常将前者称为真值,后者称为

机器数或机器码。

1原码表示法

若定点整数的原码形式为sntn-137150(5n为符号位),则原码表示的定义是

x,

[x]m=

2" - * = 2" + x. 0 > x>-2"

(2.5)

式中,L2原是机器数,r是真值。

例如,x=+1001,则[x]原= 01001

x=-1001,则Lx]原=11001

一般情况下,对于正数x-txn…xR0,则有

[x]原= 0Xn-1°~°X6180

对于负数子-tn181860,则有

〔x]原= 1xn-1°~31x0

对于0,原码机器中往往有 “+0”、“-0”之分,故有两种形式:

[+0] m= 0000- -•0

L-0] I = 1000---0

采用原码表示法简单易懂,即符号位加上二进制数的绝对值,但它的最大缺点是加法

运算复茶。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减

法。而在进行减法时,还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择

怡当的符号。为了解决这些矛盾,人们找到了补码表示法。

2.补码表示法

补码表示法是一种用于表示有符号整数的方法。在补码表示法中,最高位(最左边的位)用于表示符号位,0表示正数,1表示负数。其余位表示数值部分。

正数的补码与其原码相同。例如,+5的原码和补码都是00000101。

负数的补码表示是通过将对应正数的补码按位取反,然后将结果加1得到的。例如,-5的原码是10000101,将其按位取反得到11111010,然后加1得到11111011,这就是-5的补码表示。

补码表示法有以下特点:

1. 唯一性:每个整数都有唯一的补码表示。

2. 表示范围:n位补码能表示的范围是从-2^(n-1)到2^(n-1)-1。例如,8位补码可以表示-128到127之间的整数。

3. 加减运算:在补码表示法中,正数和负数的加法和减法可以统一进行,不需要特殊处理负数。

补码表示法的优点是简化了符号位和数值部分的处理,使得整数的加法、减法等运算更加方便和统一。它是计算机中广泛使用的整数表示方法。

公式:

1.由补码转原码公式在上面书本20页:

我的理解:

方法就是

  1. 先看第一位符号位0还是1

  1. 如果是0直接2转10因为正数的补码就是它本身

  1. 如果是1那么最高位就乘以-1其他位置不变

已知10进制真值求二进制原码和补码和反码: 1.首先看正负,正的符号位0负的为1

  1. 然后看他介于哪两个数之间然后一位一位求原码

  1. 然后正数原码补码反码就是它本身

  1. 如果是负数那么反码就符号位不变其他取反

  1. 补码直接就在反码后+1

已知IEEE754求浮点数的十进制数值

首先把十六进制的IEEE754换成2进制

  1. 一位16进制对应2进制4位

  1. 求出来后我们第一位为s

  1. 后八位为阶码E带入公式

  1. 后23位为尾数M

  1. 然后带入公式

6然后将2进制转10进制

已知某数真值然后求解IEE75416进制格式

首先分别将整数和小数部分分别转为2进制数,

  1. 然后移动小数点位置到最高位的后面确定e移码

  1. 然后带入上面的公式然后E=e+127

  1. 带入得到二进制表达

  1. 最后转16进制

原码到补码的取值范围

我们先以钟表对时为例说明补码的概念。假设现在的标准时间为 4 点正,而有一只表

巴经7点了,为了校准时间,可以采用两和方法:一是将时针退 7-4-3格:一是将时针向

前投12-3=9格。这两和方法都能对谁到4点,由此看出,减了和加。是等价的。就是说,

是(-3)对 12 的补码,可以用数学公式表示为

-3= +9

(mod 12)

mod 12 的意思就是 12 为模数,这个“模,表示被天掉的数值。上式在数学上称为同余式。

上例中 7-3和7+9(mod 12)等价,原因就是表指针超过 12时,将 12自动丢掉,最后得

到 16-12=4。同样地,以12 为模时,

4 = +8

(mod 12)

-5=+7

(mod 12)

从这里可以得到一个启示,就是负数用补码表示时,可以把减法转化为加法。这样,在计

算机中实现起来就比较方便。

对定点整数,补码形式为5a5iney…5i8o,s,为符号位,则补码表示的定义是

21>元≥0

u=12u17x=211- 110三x二-2”

(2.6)

采用补码表示法进行减法运算比原码方便名了。因为不论数是正或负,机器总是做加

法,滅法运算可变成加法运算。但根据补码定义,求负数的补码还要做滅法,这显然不方

便,为此可通过反码来解決

我们先引出数的补码表示与真值的关系。设一个二进制整数补码有n+1 位(含1位符号

位3),即

[seJa=X6,XEn- 18n-2°351280

则其补码表示的真值为

x=-295,+5218

(2.7)

当,为正整数时,36=0,-2'3-0,式2.7) 变为

x=52'x, = 0x, N, 2 - 224,70

¡=0

当*为负整数时,x,=1,

-2'x,=-2”,武(2.⑦)变为

*1-20+号25,-18,15612-53580

[x19=[+014=L-01补=0

由此可知,式(2.7)统一表示了正负整数的补码与真值的关系。

下面说明由原码表示法变成补码表示法的方法。

在定点数的反码表示法中,正数的机器码仍然等于 其真值,而负数的机器码符号位为1,

尾数则将真值的各个二进制位取反。由于原码变反码很容易实现(触发器互补输出端得到),

所以用反码作为过渡,就可以很容易得到补码。

一个正整数,当用原码、反码、补码表示时,符号位都固定为 0,用二进制表示的数位

值都相同,即三种表示方法完全一样。

一个负整数,当用原码、反码、补码表示时,符号位都固定为 1,用三进制表示的数位

值都不相同。此时由原码表示法交成补码表示法的规则如下:

(原码符号位为 1不变,整数的每一位二进制数位求反得到反码:

(②反码符号位为 1不变,反码数值位最低位加 1,得到补码。

【例2.4】

x=+122,1=-122,求[对了原入[xJ反、【xJ朴、[y了原入〔z]反、[y补。

#= (+122) 10= (+1111010) 2,

y=(-122) 10=(-1111010) 2

[x]m=01111010,

[x]x=01111010,

[x]4=01111010

[原=11111010,

[y]反=10000101,

[v]#=10000110

思考题 你能评价补码表示法的创新点吗?

3,移码表示法

移码通常用于表示浮点数的阶码。由于阶码是个 人位的整数,假定定点螫数移码形式

为eekiezerco(最高位为符号位)时,移码的传统定义是

[el=2%te,i 2k>e≥-25

(2.8)

式中,leJ为机器数,e为真值,2*是一个固定的偏移值常数。

若阶码数值部分为5位,以e表示真值,则

[el#=2°te,

25> e>-25

例如,当正数e=+10101 时,[el移=1,10101;当负数e=-10101时,lel街=2°+e=2310101

0,01011。移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位

er表示的规律与原码、补码、反码相反。

移码表示法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数

值也大。

4. 浮点数的机器表示

早期,各个计算机系统的浮点数使用不同的机器码表示阶和尾数,给数据的交换和比较带来很大麻烦。(我的理解:简单的说如果每个计算机使用的机器码都不相同那么每次数据交换和比较就要先翻译再比较就好像DNA翻译一样,统一标准有利于上述两个方面的进行从中我们也能学到统一标准的好处

当前的计算机都采用统一的IEEE754 标准中的格式表示浮点数。IEEE754标准规定的32位短浮点数和64位长浮点数的标准格式。

不论是32 位浮点数还是 64 位浮点数,由于基数2是固定常数,对每一个浮点数都一样,所以不必用显式方式来表示它。

32位的浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0 表示正数,S=1表示负数。从是尾数,放在低位部分,占用23 位,小数点位置放在尾数域最左(最高)有效位的右边。E是阶码,占用8位,阶符采用隐含方式,即采用移码方法来表示正负指数。采用这种方式时,将浮点数的指数真值e 变成阶码 区时,应将指数e加上一个固定的偏置常数 127,即E=et127。若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。例如,(1.75) 10可以表示成 1.11×2°0.111×2'、0.0111×2? 等多种形式。为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为 1,这称为浮点数的规格化表示。对于非规格化浮点数,一般可以通过修改阶码同时右移动小数点位置的办法,使其变成规格化数的形式。在IEEE7S4 标准中,一个规格化的 32 位浮点数北的真值表示为

x=

其中尾数域所表示的值是 1.M。由于规格化的浮点数的尾数域最左位(最高有效位)总是 1,

故这一位无需存储,而认为隐藏在小数点的左边。于是用23 位字段可以存储24 位有效数。

这是什么意思?这里我还没找到合理解释后面会跟新文章进行解释)

噢~我懂了先看下面我从其他博主cv来的概念。

2.浮点数的规格化

若不对浮点数的表示作出明确的规定,同一个浮点数的表示就不是唯一的。例如(1.75)10可以表示成1.11×210.111×210.0111×22等多种形式。当尾数不为0时,尾数域的最高有效位为1,这称为浮点数的规格化。否则,以修改阶码同时左右移动小数点位置的办法,使其标称规格化数的形式。

概念来源:CSDN:@rookiew

我的理解:

由于一个浮点数小数点可以放在很多地方比如1.11你也可以用科学计数法退位或者进位譬如

由于表示方法不唯一,因此要对他进行标准化由于浮点数最高有效位必为1故我们把小数点放在最高有效位后面

对 32 位浮点数 N, IEEE754 定义:

💡(这是新的概念)NaN

(1)若 E=255 且 M>0,则 N=NaN。符号 NaN 表示无定义数据,采用这个标志的目的是让程序员能够推迟进行测试及判断的时问,以便在方便的时候进行。

(2)若 E=255 且 M=0,则 N=(-1)°∞。当阶码 区 为全1且尾数M为全0时,表示的真

值N为无穷大,结合符号位S为0或1,也有+∞和一∞之分。

(3)若 E=0 且M=0,则N=(-1)°0。当阶码区 为全0且尾数M也为全0时,表示的真值

入为零(称为机器0),结合符号位 $为0或1,有正零和负零之分。

(4)若 0<E<255,则 N=(-1)°x(1.M)x25-127(规格化数)。除去用E为全。和全 1(即十进

制 255)表示零和无穷大的特殊情况,指数的偏移值不选 2’=128 (10000000),而选 27-1=

127(01111111)。对于规格化浮点数,阶码E的范围变为 1~254,指数值e则为-126~+127。

因此 32 位浮点数表示的绝对值的范围是 10-38~1038

⑤)若E=0 且 M<>0,则N=(-1)°x(0.M)x2-12°(非规格化数)。对于规格化无法表示的数

据,可以用非规格化形式表示。

64 位的浮点数中符号位1位,阶码域 11 位,尾数域 52位,指数偏移值是 1023。因此

规格化的 64 位浮点数,的真值为

浮点数所表示的范围远比定点数大。一般在高档微机以上的计算机中同时采用定点

浮点表示,由使用者进行选择。而单片机中至采用定点表示。

2.1.3 字符与字符串的表示方法

现代计算机不仅处理数值 领域的问题,而且处理大量非数值领域的问题。这样一水,

必然要引入文宇、字母及某些专用符号,以便表示文宇语言、逻辑语言等信息。例如,人

机交换信息时使用英文字母、标点符号、十进制数及诸如$,%,+等符号。然而数字计算

机只能处理二进制数据,因此,上述信息应用到计算机中时,都必须编写成二进制格式的

代码,也就是字符信息用数据表示,称为符号数据。

目前国际上普遍采用的一种字符系统是七单位的 IRA码。其美国版称为 ASCII 码(美国

国家信息交换标准字符码),它包括10 个十进制数码,26个英文字母和一定数量的专用符

号,如$,%,+等,总共128 个元素,因此二进制编码需要7位,加上一个偶校验位,共

8位,刚好为1字节

ASCI 码规定8个二进制位的最高一位为 0,余下的7位可以给出 128 个编码,表示

128 个不同的宇符。其中95 个编码,对应着计算机终端能敲入并且可以显示的 95 个字符,

打印机设备也能打印这 95 个字符,如大小写各26个英文字母,0~9这10个数字符,通用

的运算符和标点符号+,

一,

*,,

>,

=,

等。

另外的 33 个字符,其编码值为 0~31和127,则不对应任何一个可以显示或打印的实

际字符,它们被用作控制码,控制计算机某些外国设备的工作特性和某些计算机软件的运

行情况。

ASCI 编码和 128 个字符的对应关系如表 2.1所示。表中编码符号的排列次序为

6,66636a6,6660,其中6,恒为 0,表中未给出,666s64为高位部分,662660为低位部分。可

以看出,十进制的 8421 码可以去掉 666s64(=011)而得到。

字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多字节,每字节存

一个字符。当主存字由2或4 字节组成时,在同一个主存字中,既可按从低位字节向高位

字节的顺序存放字符串内容,也可按从高位字节向低位字节的顺序存放字符串内容。这两

种存放方式都是常用方式,不同的计算机可以选用其中任何一种。例如下述字符串:

主存

IF- A>B- THEN - READ(C)

就可以按图 2.1所示从高位字节到低位字节依次存放在

A

主存中。其中主存单元长度由 4 字节组成。每字节中存放相

应宇符的 ASCI 值,文字表达式中的空格“一” 在主存中也

B

T

N

D

占1字节的位置。因而每字节分别存放十进制的73,70,32,

65, 62, 66, 32, 84, 72, 69, 78, 32, 82, 69, 65, 68,

2.1.4 汉字的表示方法

1.汉字的输入编码

为了能直接使用西文标准键盘把汉字输入到计算机,就必须为汉字设计相应的输入年

码方法。当前采用的方法主要有以下三类:

数宇编码 常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标

局公布的 6763 个两级汉字分为 94个区,每个区分94位,实际上把汉字表示成二维数组

每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉岁

需按键四次。例如“中”字位于第54区48 位,区位码为 5448。

数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺点是代码头

以记忆。

拼音码 拼音码是以汉语拼音为基础的输入方法。凡掌握汉语拼音的人,不需训练和

记忆,即可使用。但汉宇同音字太多,输入重码率很高,因此按拼音输入后还必须进行月

音字选择,影响了输入速度。

宇形编码 字形编码是用汉字的形状进行的编码。汉字总数虽多,但是由一笔一画络

成,全部汉字的部件和笔画是有限的。因此,把汉字的笔画部件用字母或数字进行编码,

按笔画的顺序依次输入,就能表示-

-个汉字。例如五笔字型编码是最有影响的一种字形线

码方法。

除了上述三种编码方法之外,为了加快输入速度,在上述方法基础上,发展了词组箱

入、联想输入等多种快速输入方法。但是都利用了键盘进行“手动”输入。理想的输入方

式是利用语音或图像识别技术“自动”将拼音或文本输入到计算机内,使计算机能认识汉

字字,听懂汉语,并将其自动转换为机内代码表示。目前这种理想己经成为现实。

2.汉宇内码

汉字内码是用于汉字信息的存储、 交换、检索等操作的机内代码,

一般采用2字节表

示。英文字符的机内代码是七位的 ASCII 码,当用1字节表示时,最高位为“0”。为了与

英文宇符能相互区别,汉宇机内代码中 2 字节的最高位均规定为“1”。例如,汉字操作系

统CCDOS 中使用的汉字内码是一种最高位为 “1”的两字节内码。

有些系统中字节的最高位用于奇偶校验位,这种情况下用 3字节表示汉字内码。

3. 汉字宇模码

字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。

根据汉字输出的要求不同,点阵的多少也不同。简易型汉字为 16×16点阵,提高型汉

字为24×24 点阵、32×32 点阵,甚至更高。因此字模点阵的信息量是很大的,所占存储空

间也很大。以16×16点阵为例,每个汉字要占用 32 字节,国标两级汉字要占用256K 字节。

因此字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵

代码。当显示输出或打印输出时才检索字库,输出字模点阵,得到宁形。注意,汉字的输

入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,

不要混为一谈。

215 校验码

元件故障、噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。例如,

将1位二进制数,从部件 A 传送到部件 B,可能由于传送信道中的噪声干扰而受到破坏,

以至于在接收部件 B收到的是死而不是x。 为了防止这种错误,可将信号采用专门的逻辑电

路进行编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一些校验位,用

来确定宇中出现错误的位 置。计算机中常用这种检错或纠错技术进行存储器读写正确性或

传输信息的检验。这里仅介绍检错码。

最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验。设X=(tDE••xn-D是

• 个几位宇,则奇校验位C定义为

=80 458.5-1

式中,田代表按位加,表明只有当叉中包含奇数个1时,才能使C=1,即C=0。

同理,偶校验位C定义为

(2.11)

C=x④x¢.¢ 3n-1

(2.12)

即X中包含偶数个1时,才使C=0

假设

一个字子从部件A传送到部件 B。在源点 A,校验位C可用上面的公式算出来,

并合在一起将(30xj••sn1C)送到B。假设在B 点真正接收到的是X=(3x……对-C),然后计

若F-1,意味着收到的信息有错,例如,(sox1•xEn-1)中正巧有一位变“反”时就会出现这

种情况。若F=0,表明字X传送正确。

奇偶校验提供奇数个错误检测,无法检测偶数个错误,更无法识别错误信息的位置。

【例2.11

己知下表中左面一栏有5 字节的数据。请分别是用奇校验和偶校验进行编

码,填在中间一栏和右面一栏,

解 假定最低一位为校验位,其余高8位为数据位,列表如下。从中看出,校验位的

值取0还是取 1,是由数据位中1的个数决定的。

我的总结:

2.1 信息的数字化表示概念

1.信息: 计算机能够处理的如数值、文字、符号、语音、图形等数据称为信息。

2.数据: 传递(携带)信息的实体,是信息的具体表现形式。信息是数据的内容或解释。

3.编码: 就是用少量、简单的基本符号,选用一定的组合规则,以表示大量复杂多样的信息。如12345,Computer就是现实生活的典型例子.计算机中使用的是二进制编码又称基二码。如果表示的是数值数据,则称为二进制数。

数据与编码的关系: 数据→适合传输的数字信号

4.信号:电流、电位、脉冲等,数据以信号的形式在介质中传播。是数据的具体物理表现。

5. 二进制编码的作用

(1) 基二码在物理上最容易实现。如触发器具有两个稳定的状态可表示0和1,又很 方便地实现翻转。

(2)二进制算术运算规则简单,为提高计算机的运算速度,降低实现成本奠定了基础;

(3)基二码的两个基本符号“0”和“1”能方便地与逻辑命题的“是”和“否”,或称“真”和“假”相对应。

6.在计算机中所有的数据均用二进制表示和存储

例如:用来表示外界各种信息的数值数据、非数值数据

计算机内部的各种指令,状态,地址和数据等

7.计算机中所有的运算都最终转化为二值运算,基于布尔代数运算规则

一、进位计数制(二、八、十、十六进制数)

凡是需要计算机处理的信息,无论其表现形式是文本、字符、图形,还是声音、图象,都必须以二进制数的形式来表示。因此必须首先掌握计算机中数的表示和编码。人们最常用的数是十进制数。为了总结各种进制数的共同特点,这里首先归纳十进制的主要特点。

十进制数有两个主要特点:

①有十个不同的数字符号:0,1,2…,9。

② 遵循“逢十进一”原则。

一般地,任意一个十进制数N都可以表示为:

编辑

式(2.1)是十进制按权的展开式。

式中,10称十进制数的基数,i表示数的某一位, 10i称该位的权,Ki表示第i位的数码,它可以是0~9中的任意一个数,由具体的数N确定。m和n为正整数, n为小数点左边的位数, m为小数点右边的位数。式(2-1)可以推广到任意进位计数制。

设基数用R表示,则对于二进制,R=2,K为0或1,逢二进一。

对于八进制,R=8,K为0~7中的任意一个,逢八进一。

对于十六进制,R=16,K为0~9、A、B、C、D、E、F共16个数码中的任意一个,逢十六进一。

综上可见,上述几种进位制有以下共同点:

① 每种进位制都有一个确定的基数R,每一位的系数K有R种可能的取值。

② 按“逢R进一”方式计数,在混合小数中,小数点左移一位相当于乘以R,右移一位相当于除以R。

二、数制间的转换

1.二、八、十六进制数转换为十进制数

这种转换只需将二、八、十六进制数按权展开。

例:(110.01)2 = 1×22+1×21+0×20+0×2-1+1×2-2 =(6.25)10

(175)8 =1×82+7×81+5×80 =(125)10

(B2C)16 =11×162+2×161+12×160=(2860)10

2.十进制转换成二、八、十六进制数

十进制数转换成二、八、十六进制数时,需要把整数部分与小数部分分别转换,然后拼接起来。

(1)整数部分的转换——除基取余法 (2)小数的转换——乘基取整法

3.二进制与八进制、十六进制的相互转换

由于8=23,16=24,因此二进制与八进制或十六进制之间的转换就很简单。将二进制数从小数点位开始,向左每3位产生一个八进制数字,不足3位的左边补零,这样得到整数部分的八进制数;向右每3位产生一个八进制数字,不足3位右边补0,得到小数部分的八进制数。同理,将二进制数转换成十六进制数时,只要按每4位分割即可。

例:(101101.101001)2=(55.51)8=(2D.A4)16

很明显,八或十六进制要转换成二进制,只需将八或十六进制数分别用对应的三位或四位二进制数表示即可。

一个数值型数据的完整表示包括三个方面:

(1)采用什么进位计数制,就是逢几进位;

(2)如何使符号数字化,即机器数的编码方法;

(3)如何处理小数点位置,即采用定点表示或浮点表示。

一、机器数与真值

机器数是一个数在计算机中的表示形式,一个机器数所表示的数值称为真值。上面提到的二进制数,没有提到符号问题,故是一种无符号数的表示。对无符号数,机器数与真值相同,此时计算机的全部有效位都用来存放数据,它能表示的最大数值取决于计算机的字长;对于n位字长的计算机来说,表示无符号的整数范围为0~2n–1。 带符号数的习惯表示方法是在数值前用“+”号表示正数,“–”号表示负数。计算机只能识别0和1,对数值的符号也不例外。对于带符号的数,在计算机中,通常将一个数的最高位作为符号位,最高位为0,表示符号位为正;最高位为1,表示符号位为负。

例如:真值 机器数

+82=0 1010010

–82=1 1010010

式中等号左边的+82和–82分别是等号右边的机器数所代表的实际数,即真值。

二、原码、反码与补码

1.原码

上述以最高位为0表示正数,1表示负数,后面各位为其数值,这种数的表示法称为原码表示法

原码的几个特点:

(1)数值部分即为该带符号数的二进制值。

(2)“0”有+0和- 0之分,若字长为八位,则:(+0)原=0 0000000,(–0)原=1 0000000。(这里之前老师问到了不会)😂(我的理解:即符号位不同有正0和负0)

(3)8位二进制原码能表示的数值范围为:01111111~11111111,即+127~–127。(问的数值范围不是问这个数是多少不一样的)

那么,对于n位字长的计算机来说,其原码表示的数值范围为~

原码简单,与真值转换方便。但是若两个异号数相加或两个同号数相减时,必须做减法。在计算机机器内部,为了避免做减法,把减法运算统一转换为加法运算,即用一个加法器来完成加减法运算,便引入了反码和补码。

2.反码

对于正数其反码形式与其原码相同,最高位0表示正数,其余位为数值位。

例如:X=+5, [X]原=[X]反=0 0000101

X=+127, [X]原=[X]反=0 1111111

X=+0, [X]原=[X]反=0 0000000

对于负数将其原码除符号位以外,其余各位按位取反,即可得到其反码表示形式。

例如:X=–5, [X]原=1 0000101, [X]反=11111010

X=–127, [X]原=1 1111111,[X]反=10000000

X=–0, [X]原=1 0000000, [X]反=11111111

从以上几例,可归纳出二进制反码的特点:

(1)“0”有+0和-0之分。

(2)8位二进制反码所能表示的数值范围为+127~–127,一般地,对于n位字长的计算机来说,其反码表示的数值范围为~.

(3)8位带符号的数用反码表示时,若最高位为“0”(正数),则后面的7位即为数值;若最高位为“1”(负数),则后面7位表示的不是此负数的数值,必须把它们按位取反,才是该负数的二进制值。

例如:[X]反=10101010,它是一个负数,其中后7位为0101010,取反得1010101,所以负数:X=–(1×26+1×24+1×22.+1×20)=–85

3.补码

正数的补码与其原码具有相同的表现形式,最高位为符号位,其余为数值位。

例如:X=+127,[X]原=[X]反=[X]补=0 1111111

X=+0, [X]原=[X]反=[X]补=0 0000000

负数的补码即为它的反码在最低位加上1。

例如:X=–5, [X]原=1 0000101,[X]反=1 1111010,[X]补=1 1111011

X=–0, [X]原=1 0000000,[X]反=1 1111111, [X]补=0 0000000

X=–128,[X]补=1 0000000

从以上几例,可归纳出二进制补码的几个特点:

1)[+0]补=[–0]补=00000000,无+0和–0之分。

(2)正因为补码中没有+0和–0之分,所以8位二进制补码所能表示的数值范围为+127~–128;同理可知,n位二进制补码表示的范围为+2n-1–1~–2n-1。在原码、反码和补码三者中,只有补码可以表示–2n-1。

(3)一个用补码表示的二进制数,当为正数时,最高位(符号位)为“0”,其余位即为此数的二进制值;当为负数时,最高位(符号位)为“1”,其余位不是此数的二进制值,必须把它们按位取反,且在最低位加1,才是它的二进制值。

总结:

(1)只有源码和反码有两个0(即+0,-0),但是补码只有一个0

BCD(二-十进制)码是一种常用的数字代码,它广泛应用于计算机中。这种编码法分别将每位十进制数字编成4位二进制代码,从而用二进制数来表示十进制数。

计算机中采用的是二进制数,由于二进制数不直观,人们不习惯,因此计算机在输入和输出时,通常仍采用十进制数,只不过它要用二进制编码来表示,这时使用BCD码就很方便。

最常用的BCD码是标准BCD码或称8421码(这是根据这种表示中各位的权值而定的,其权值与普通的二进制相同)。表2.1列出了标准BCD码与十进制数字的编码关系。

表2.1标准BCD码与十进制数字的编码关系

十进制数

标准BCD码

十进制数

标准BCD码

0

0000

8

1000

1

0001

9

1001

2

0010

10

00010000

3

0011

11

00010001

4

0100

12

00010010

5

0101

15

00010101

6

0110

63

01100011

7

0111

94

10010100

十进制基数为10,它有10个不同的数码。因此为了能表示十进制数的某一位,必须选择至少4位二进制数(4位二进制数可以表示16种不同的状态,所以用以表示十进制数时要丢掉6种状态)。在BCD码中,0~9之间的十进制数的BCD码与二进制数中的表示形式是一样的,而1010~1111这6种状态不使用,因此用标准BCD码表示十进制数时,只要对每个十进制数字用适当的二进制数代替即可。

例如:十进制数123可以表示成:0001 0010 0011。

例如:十进制小数0.456可以表示成:0.0100 0101 0110。

二、字符的编码

各种字符信息应用到计算机中时,都必须编写成二进制格式的代码,也就是字符信息用数据表示,称为符号数据。

计算机中最通用的字符信息编码为美国标准信息交换码,简称ASCⅡ码,这种代码用一个字节(8位二进制码)来表示一个字符,其中低7位是字符的ASCⅡ码值,例如:英文字母A是41H。小于20H的是不可显示字符,通常是命令代码,如0AH是换行命令符。

三、汉字的编码(输入码、内码、字模码)

用计算机进行汉字信息处理,首先必须将汉字代码化,即对汉字进行编码,称为汉字输入码。汉字输入码送入计算机后还必须转换成汉字内部码,才能进行信息处理。处理完毕之后,再把汉字内部码转换成汉字字模码,才能在显示器或打印机输出。因此汉字的编码有输入码、内码、字模码三种。

1.汉字的输入编码(数字编码、拼音码、字形编码)

目前,计算机一般是使用西文标准键盘输入的,为了能直接使用西文标准键盘输入汉字,必须给汉字设计相应的输入编码方法。其编码方案有很多种,主要的分为三类:数字编码、拼音码和字形编码。

(1)数字编码

常用的是国标区位码,用数字串一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。例如:“中”字位于第54区48位,区位码为5448。数字编码输入的优点是无重码,输入码与内部编码的转换比较方便,缺点是代码难以记忆。

(2)拼音码

拼音码是以汉语拼音为基础的输入方法。凡掌握汉语拼音的人,不需训练和记忆,即可使用,但汉字同音字太多,输入重码率很高,因此按拼音输入后还必须进行同音字选择,影响了输入速度。

(3)字形编码

字形编码是用汉字的形状来进行的编码。汉字总数虽多,但是由一笔一划组成,全部汉字的部件和各行其是是有限的。因此,把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字了。例如:五笔字型编码是最有影响的一种字形编码方法。

2.汉字内码

同一个汉字以不同输入方式进入计算机时,编码长度以及0、1组合顺序差别很大,使汉字信息进一步存取、使用、交流十分不方便,必须转换成长度一致、且与汉字惟一对应的能在各种计算机系统内通用的编码,满足这种规则的编码叫汉字内码。

汉字内码:是用于汉字信息的存储、交换检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能够区别,汉字机内代码中两个字节的最高位均规定为“1”。

有些系统中字节的最高位用于奇偶校验位或采用扩展ASCII码,这种情况下用三个字节表示汉字内码。

3.汉字字模码

字模码:是用点阵表示的汉字字形代码,它是汉字的输出形式。计算机内的汉字需要在屏幕上显示或在打印机上输出时,需要知道汉字的字形信息,汉字内码并不能直接反映汉字的字形,而要采用专门的字形码。

根据汉字输出的要求不同,点阵的多少也不同。简易型汉字为16×16点阵,提高型汉字为24×24点阵、32×32点阵,甚至更高。点阵越大,描述的字形越细致美观,质量越高,所占存储空间也越大。汉字点阵的信息量是很大的,以16×16点阵为例,每个汉字要占用32个字节,国标两级汉字要占用256K字节。因此字模点阵只能用来构成汉字库,而不能用于机内存储。

综上所述,汉字从送入计算机到输出显示,汉字信息编码形式不尽相同。汉字的输入编码、汉字内码、字形码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值