2.1 数据与文字的编码
数字计算机中采用二进制的数据表示方式,因为二进制数能方便可靠地用数字电路的逻辑电平表示。
在计算机中表示的二进制数据称为机器数。它是一系列位数固定而且数量有限的二进制代码,表示的数值范围也是有限的。计算机中表示的机器数是一系列离散的数据。一个机器数所代表的实际数值称为真值。
2.2.1 数制的转换
计算机中采用的二进制数采用0和1两个符号表示数值。表示大于2的数时用多个记数符号的排列表示,每一个记数符号也称为一个位。多位数据中每一位记数符号代表的数值是记数符号乘以2的指数的结果。
二进制数便于在计算机中进行存储和计算。但它表示数据时需要用较多的位数,不便于人们书写和记忆。为此,在计算机中还常常把若干个二进制位组合起来,构成八进制数或十六进制数。
八进制数采用0到7这八个数字符号。在十六进制数中,除了采用0到9这十个符号外,还采用字母A到F这六个符号表示一位中大于9的数。
十进制数到二进制的转换可分为整数和小数两种情况。整数的十进制数到二进制数的转换可以采用除二取余的方法。即把十进制数除以二,所得余数作为二进制数的最低位,在除以二,所得余数作为次低位,如此重复,直到商数为零为止。然后将余数连起来形成数据的二进制表示。
对于带有小数的十进制数,在转换成二进制数时则须对小数部分采用按乘2取整数的方法。其规则是:用2去乘待转换的十进制数的小数部分,取乘积的整数部分作为转换后的二进制数中小数部分的最高位数字;在用2去乘上一步乘积的小数部分,再取新乘积的整数部分作为转换后二进制小数低一位数字;不断重复直至乘积部分为0或的到的小数的位数满足要求时结束。然后将整数连起来形成数据的二进制表示。
2.1.2 定点数的编码
定点数是指小数点位置固定不变的数据。在计算机中,通常采用两种类型的定点数表示。一种定点数把小数点定在最低位数的右面,这种定点数称为定点整数,因为它实际没有小数。另一种定点数把小数点固定在最高位数的后面,即纯小数表示,称为定点小数,它只保留小数点后面的数据,小数点前面的一位数据固定为零。这种二进制定点数的表示可以直接在计算机中表示,计算机中表示无符号数就直接用这种二进制的表示作为数据的编码。
计算机中的数据编码都是有一定的表示范围的,离散的;而不像数学中的数可以是任意大的,连续的。
在数据编码中,如果数据值超过了编码所能表示的数值范围,则称为数值溢出。
计算机中表示一个带符号数的方法有:原码表示法、反码表示法、补码表示法和移码表示法四种。
1.原码表示法
原码表示法中用一个符号位表示数据的正负,用0代表正号,1代表负号,其余的代码表示数据的绝对值,称为数值位。
在原码中,零有两种表示方式。即000...0和100...0。
2.补码表示法
补码表示法也是用最高一位代表符号,其余各位代码表示数值。对于一个整数x,补码的编码方式为:正数的补码与原码相同;负数的补码是将x的二进制位按位取反后在为低位上加1。
求一个负数的补码的另一种方法是从最低位开始,对遇到的0和第一个1取其原码,从第一个1之后开始直到最高位(符号位)均按位取其反码。
为了便于判别运算结果是否溢出,某些计算机中还采用一种双符号的补码表示方式,它采用两个相同的符号位,又称为模4补码。对于正数,其双符号位补码的两个符号位为00;对于负数,其双符号位补码的两个符号位为11.也就是说,一般情况下,这两个符号位始终相同,否则表明出现了溢出。
3.反码表示法
反码表示法是用对负值的各位取反的表示方法,反码的最高位也是符号位。0表示正数,1表示负数。对于整数x,反码的编码方法是:正数的反码与原码相同,直接在二进制表示前加上符号位0构成;负数的反码是将x的二进制位按位取反得到。
在反码表示中,零有两个编码,即000...0和111...1。
4.移码表示法
对于n+1位二进制整数x=x0x1...xn,移码的定义为:
[x]移=2n+x
也就是取其加上2n后的二进制数编码,移码的编码方法只是将数据的二进制码加上一个常数2n 。
在带符号的移码表示中,最高位仍可看作是符号位,但1表示正号,0代表负号,将移码与补码相比较,可以发现只是符号位不同,其余位相同。
移码表示中,0有惟一的编码,即100...0。
定点小数没有移码定义,移码的定义仅限于定点整数。
原码、反码和补码这三种表示方法的共同点是:编码的最左位为1时表示一个负数,为0时表示一个正数。而移码则与此相反,1表示正数,0表示负数。
2.1.3 浮点数的编码
在浮点数据编码中,数据代码分为尾数和阶码两部分。尾数表示有效数字,解码表示小数点的位置,加上符号位,浮点数据通常表示为:
N=(-1)s*M*RE
其中S(sign)为数据的符号位,M(mantissa)是浮点数的尾数,R(radix)是基数,E(exponent)是阶码。
为了在尾数中表示最多的有效数据位,同时使浮点数具有惟一的表示方式,浮点数的编码应当采用一定的规范,规定尾数部分用纯小数形式给出,而且尾数的绝对值应大于或等于1/R并小于或等于1,即小数点后的第一位不为零。这种表示的规范称为浮点数的规格化表示方法。
2.1.4 文字的编码
1.西文字符的编码
文字字符编码的方案有多种,目前国际上普遍采用的一种字符编码系统是ASCII(American Standard Code for Information Interchange)。在这种编码标准中规定8个二进制位的最高一位为0,余下的7位可以给出128个编码,表示128个不同的字符,编码范围是0016至7F16 。
2.汉字的编码
在汉字中将输入用的编码和机内码存储的编码分开定义。机内码是汉字在计算机内部进行存储和处理时采用的表示形式,它同样是一种二进制代码。
汉字机内码是用于汉字信息存储、交换、检索等操作的内部代码。
3.十进制数的编码
十进制数据在计算机中主要有两种表示形式:
(1)字符串形式,即一个字节存放一个十进制的数位或符号。用连续的多个字节表示一个完整的十进制数据。
(2)压缩的二进制数串形式,即一个字节存放两个十进制的数位。它比较节省存储空间,又便于进行算术运算。
2.1.5 检错码和纠错码
这种能够发现某些错误或确定错误位置的数据编码称为数据错误校验码,或检错码。
数据校验码把信息序列分成k个码元的组,通过编码器将每组的k个信息代码按一定校验规则产生r个多余码元(校验码),输出长为n=k+r的一个码元组(码字),这种校验码称为分组码。分组码中每一码元组的r个校验码元与本组的数据代码有关,而与别组的数据无关,代码中的错误将引起校验结果的变化。分组码可用(n,k)表示,n表示码长,k表示信息位数目。
1.奇偶校验码
奇偶校验码是一种最简单的检错码,它在每k个信息位中增加一个校验位代码,能发现数据代码中一位出错情况,常用于对存储器数据的检查或者传输数据的检查。增加的冗余位称为奇偶校验位。
偶校验码的构成规则是:所有信息位和单个校验位的模2加等于0,即每个码字(包括校验位)中1的数目为偶数。奇校验码的构成规则是:所有信息位和单个校验位的模2加等于1,即每个码字中1的数目为奇数。
在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。在一种编码中各个码字间距离的最小值称为该代码的最小码距d0,最小码距是数据编码的一个重要特征。
2.海明码
常见的纠错码有海明码和循环码。海明码能检测出2位错误,并能纠正1位错误。其原理是,在一个数据位组中加入几个校验位,增加数据代码间的最小码距到3,采用多个校验公式对代码进行多重校验,当某一位发生变化时就会引起校验结果发生变化,不同代码的错误会得出不同的校验结果。
3.循环码
循环冗余校验码(CRC)的校验方法是基于模2运算建立有效信息和校验位之间关系的方法。
2.2 定点数加减运算
2.2.1 补码的加减法运算
在数据运算中,参与运算的数据又称为操作数(operand)。补码操作数加减法运算的特点是可以对补码编码的数据直接进行运算,包括符号位。
两个数的补码相加,其结果就是这两个数相加后的补码。
两个数的补码相减,其结果就是这两个数相减后的补码。
2.2.2 溢出的检测方法
对于加法,只在正数加正数和负数加负数两种情况下才会产生溢出,符号不同的两个数相加是不会产生溢出的。对于减法,只在正数减负数和负数减正数两种情况下才会产生溢出,符号相同的两个数相减是不会产生溢出的。
2.2.3 基本的二进制加法/减法器
一位加法器电路有全加器和半加器两种。半加器电路只是对两个输入数据位进行加法,输出一个结果位,不考虑数据的进位,也不产生进位输出。半加法器电路实际上是一个异或门电路。全加器则将两个数据和低位送来的进位输入进行加法运算,输出一个加法结果位和一个向高位输出的进位信号。所以全加器共有3个输入端和2个输出端。
2.3 定点数乘除法运算
2.3.1原码一位乘法
原码乘法将符号位与数值位分开进行运算,对数值位部分进行乘法运算,得到的结果为运算结果的数值部分,再加上运算结果的符号位形成结果的原码。运算结果的数值部分是乘数和被乘数数值位的乘积,运算结果的符号位是乘数和被乘数符号位的异或。
2.3.2 补码的一位乘法
2.3.3 定点数除法运算
手工进行二进制除法的规则是判断被除数与除数的大小,若被除数小,则上商0,并把被除数的下一位移下来或者补0,再用余数和右移一位的除数比;若被除数大则上商1并做减法。
2.4 逻辑运算
在数学逻辑中介绍的逻辑运算是对一位的二进制布尔变量的逻辑运算。在计算机中,指令通常对寄存器中的数据字进行运算。指令的逻辑运算也是对数据字的逻辑运算。
对数据字进行的逻辑运算指的是对于存储在寄存器中的位串进行二进制运算。所谓按位运算就是分别考虑每一位信息并将每一位的信息看作是一个独立的信息,而不是看作是一个数据中的不同的为。逻辑运算中的各个位之间没有相互关系,如在数据运算中的进位或者借位的关系。
最基本的逻辑运算是对数据进行按位的逻辑与、逻辑或、逻辑非等。
1.逻辑非。逻辑非运算对数据的每一位进行求反,将1变成0,0变成1。这种运算称为按位求反,或称按位求非。
2.逻辑加。逻辑加运算就按位求逻辑或的运算。与二进制加法的一个重要区别就是运算是按位进行的,位与位之间没有进位。
3.逻辑乘。逻辑乘运算就是按位求逻辑与的运算。运算按位进行,位与位之间没有进位。
另一类逻辑运算是移位操作。移位操作分为算术移位、逻辑移位和循环移位三种,每种移位操作又有左移和右移之分。算术移位可用于实现乘除法的运算。算术右移保持最高位(符号位)不变,而逻辑右移最高位补零。
2.5定点运算器的组成和结构
定点运算器中一般包括ALU部件、寄存器、多路选择器、移位器和数据通路等。
2.6 浮点数运算和浮点数运算器
2.6.1 浮点数加法和减法
1.对阶
对于带小数点的数据进行加减法运算时,需要把小数点对齐,浮点数加减法也是这样。在浮点数中小数点对齐意味着阶码相等。浮点数加减法的第一步是使得两个数的阶码相等,这称为对阶。
在对阶操作时,总是使小的阶码向大的阶码对齐。
对阶操作的方法是:将原来阶码小的数的尾数部分右移,并相应地增加其阶码,以保持浮点数值不变。由于在右移过程中将最低位移出,所以实际上浮点数值的精度会下降。
2.尾数运算
尾数运算实现尾数的加减运算,执行两个完成对阶后的浮点数的运算。
3.规格化
如果尾数的加减法运算得到的结果不符合规格化要求,就必须进行规格化处理。
4.舍入
在进行浮点运算时,为了保证结果的精度,在运算时的中间值可以多保留一些数据位,称为保护(guard)位。
舍入操作就是消除保护位数据位并按照规则调整剩下的部分。
5.检查阶码是否溢出
浮点数的溢出表现为阶码的溢出。如果阶码正常,运算正常完成;若阶码下溢,要置运算结果为浮点型形式的机器零;若阶码上溢,则置溢出标志。
2.6.2 浮点数的乘法和除法
浮点数的乘除法运算要经过阶码加减、尾数乘除、规格化、舍入操作和判断加过正确性五个步骤。
相关推荐
### 数据的表示和运算 #### 一、数制和编码 ##### 1. 进位计数制及其相互转换 - **定义**:进位计数制是指在数学和计算机科学中使用的数字系统,其中每个位置上的数字代表该位置基数的幂次。 - **常见进位计数制*...
第3章 运算方法和运算器主要探讨...总结起来,第3章运算方法和运算器主要讲述了计算机如何对各种类型的数据进行数字化编码,以及如何通过二进制运算和硬件电路实现数据处理和校验,这些都是理解计算机工作原理的基础。
学习这部分内容时,需关注数据编码,如数值数据的数制转换、机器码表示,以及浮点数的表示方式。 在运算方法方面,课程要求掌握定点运算,包括加、减、乘、除,理解溢出处理机制。定点运算中,溢出通常发生在加减法...
第二章主要探讨了数据和文字的表示方法,以及定点运算的原理和结构。 数据和文字的表示方法涉及多个方面: 1. **数据格式**:在计算机中,数据可以采用定点格式或浮点格式。定点格式包括定点整数和定点小数,其中...
在第二章中,我们深入探讨了数据与文字的表示、定点运算以及浮点运算。 首先,数据与文字的表示是计算机处理信息的基础。数据分为符号数据和数值数据,前者包括ASCII码、汉字和图形等非数值信息,后者则涉及数字的...
本章主要探讨了数据格式的表示、机器码的表示方式以及各种运算的处理方法。 首先,我们来看数据格式的表示。数据可以采用定点格式或浮点格式进行表示。定点格式分为纯小数和纯整数两种,其中定点小数格式是将小数点...
总结来说,第二章“计算机组成原理:运算方法与运算器”涵盖了数据表示、定点运算和浮点运算的基础知识,这些知识对于理解和设计计算机硬件以及编写高效的软件至关重要。理解这些概念有助于深入探究计算机的工作原理...
本章主要探讨了参与运算的数值数据在计算机中的表示方法,以及不同类型的数值运算,包括定点数和浮点数的运算。下面将详细阐述这些知识点。 首先,数据在计算机中的表示分为两种主要类型:定点数和浮点数。定点数是...
计算机组成原理是理解计算机系统内部工作原理的关键领域,其中第二章主要探讨了运算方法与运算器的设计。在这一章中,我们首先会学习到如何在计算机中表示数据和文字,这是进行任何计算的基础。 数值型数据是计算机...
《数据的机器级表示》第二章主要探讨了计算机如何在硬件层面表示和处理数值和非数值数据。在计算机科学中,所有的数据最终都需要转化为二进制形式,因为计算机硬件最直接理解和操作的是二进制(0和1)信号。本章内容...
综上所述,本章介绍了数据挖掘领域的基础知识,包括数据对象、属性、属性类型和属性值的特性。理解这些概念对于有效地挖掘数据中的模式、关系和趋势至关重要,这是数据挖掘的核心目标。通过深入学习和应用这些知识,...
例如,二进制的0和1对应逻辑命题的真和假,使得计算机能够执行逻辑运算和程序中的逻辑判断。同时,用户与计算机的交互界面会将这些二进制数据转换为人类可读的形式,如文本、音频和图像。 了解这些基本概念对于理解...
Java程序设计中的第三章主要涵盖了数据运算、流控制和数组这三个核心概念,它们是编程的基础。首先,我们从数据类型开始。 数据类型是Java中定义变量的类别,它决定了变量可以存储的数据种类以及如何处理这些数据。...
机器数是数据在计算机硬件中的实际表示形式,包括正负号和数值的二进制编码。变形补码是一种特殊的机器数表示方式,用两位表示符号,00代表正,11代表负,其余部分与补码相同。规格化是确保浮点数表示的一致性,通常...
这份文件涵盖了计算机系统结构的第二章作业及答案,主要涉及指令集结构、CISC 和 RISC 指令集结构、寻址方式、指令格式等计算机系统结构的知识点。 1. 区别不同指令集结构的主要因素是 CPU 中用来存储操作数的存储...
计算机组成原理中,信息的表示和编码是至关重要的概念,因为它们定义了计算机如何理解和处理数据。在计算机内部,数据可以被归类为数值数据和非数值数据,这两种数据都需要特定的方式进行表示和编码。 首先,我们要...
第三章“运算方法和运算部件”深入讲解了数据表示和计算的方法,包括数据的编码、转换、运算以及运算部件的工作原理。 首先,3.1节介绍了数据的表示方法和转换。在计算机中,数据通常以二进制、八进制、十进制和...
在MySQL数据应用与开发的教材或指南中,第二章通常会详细讲解MySQL的基本语法要素、字符集层次设计、数据类型、运算符和表达式、常用函数等知识。这些内容对于数据库的正确使用、性能优化、应用开发以及解决实际问题...
计算机组成原理第二章主要讨论计算机内部数据的表示方法和相互之间的等效转换。数据是计算机处理的对象,计算机内部处理的数据可以分为数值型数据和非数值型数据。数值型数据可以用来表示数量的多少,可以比较其大小...
《计算机组成原理》第二章主要探讨了计算机中数据的表示和处理方法,这是理解计算机工作原理的关键部分。这一章的内容涵盖了数据的定义、信息的概念、媒体的类型,以及进位计数制、数的表示方法、字符编码和数据校验...