本章讲了4个方面的问题:
  1.数据表示的基本概念,希望大家了解什么是数据表示、数据表示与数据类型的关系等两个问题。
数据表示是计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类型。数据表示是数据类型中最常用,也是相对比较简单,用硬件实现相对比较容易的几种。最常见的数据表示有定点数、逻辑数、浮点数、字符、字符串等。因此,数据表示是数据类型的一个子集。
  2.浮点数的表示方式,这是本章的重点之一。
  本节中的基本概念主要有两个:一是定义浮点数的主要参数,二是浮点数的3个性质。分别小结如下:
  定义一种浮点数表示方式需要确定6个参数,这6个参数的确定原则是:
  (1) 尾数m的数制和码制。主要从运算简单、表示数直观等方面来考虑。目前多数机器用小数、原码表示,只有早期的一些没有硬件乘除法指令的机器采用补码表示。尾数采用原码制表示,虽然加减法比采用补码表示复杂,但乘除法要比采用补码表示简单得多,而且,采用原码表示非常直观。
  另外,尾数采用小数表示能简化运算,特别是乘除法运算。
  (2) 阶码e的数制和码制。目前一般机器都采用整数、移码(或称增码、偏码、余码等)表示。阶码采用移码表示的主要原因是:使浮点0与机器0一致。如果浮点0与机器0不同,对机器硬件和软件的设计都会产生许多麻烦。例如,要判断运算结果是否为0必须作特殊的处理。然而阶码采用移码表示后,在做浮点乘、除法运算时,由于阶码要进行加减运算,移码的加减法运算要比补码稍微复杂些。
由于阶码主要是用来扩大浮点数的表示数的范围的,因此,它必须用整数表示。
  (3) 尾数的基值rm。在浮点数的总字长一定的情况下,尾数的基值rm选择2,浮点数具有最大的表示数的范围和最高的表示数的精度。如果再采用隐藏位表示方法,则这种浮点数表示方法同时又具有最高的表示数的效率。
  (4) 阶码的基值re。在一般通用计算机中,浮点数阶码的基值都取2,这是因为,在目前的一般计算机中,基本存储单元都是二态的。另外,浮点数中的阶码放在指数的位置上,主要用来扩大表示数的范围,阶码采用其它进位制与采用二进制相比并不能扩大浮点数的表示数的范围,因此,浮点数中的阶码采用二进制是必然的。
  (5) 另外两个参数是尾数字长p和阶码字长q。目前,多数计算机的短浮点数是32位,长浮点数是64位。尽管在早期计算机中,浮点数的字长有16位、24位、36位、48位等多种,但这些计算机目前已经很少使用。在浮点数总字长中,除了尾数符号和阶码符号各占一个二进制位之外,其余都由尾数字长p和阶码字长q占据。
  在浮点数表示方式中,尾数字长p主要影响表示数的精度,阶码字长q主要影响表示数的范围,而浮点数的表示数的范围和表示数的精度是浮点数的两个最主要的特性。
  本节的主要结论是:浮点数的尾数基值rm取2,并采用隐藏位表示方法是最佳的浮点数表示方式。这种浮点数表示方式能做到表示数的范围最大、表示数的误差最小、表示数的效率最高。
  3.浮点数的运算方法。本节介绍了浮点数的加、减、乘、除法运算。主要掌握浮点数的加、减法运算,乘法运算和除法运算作一般了解。
  浮点数加减法运算的过程分为三步:对阶、为数加和后处理。
  对阶的规则是向大阶看齐,即阶码小的那个尾数右移,移位的次数等于参加运算的两个数的阶码之差。
  尾数加,实际上是定点数的加法运算。
  结果的后处理,包括规格化和舍入处理,如果运算结果的尾数部分溢出,则需要向右规格化;如果运算结果的最高位为0,则需要向左规格化。
  4.自定义数据表示方法,由于它与高级语言中的数据表示法非常接近,因此是一种很有希望的数据表示方法。
  当数据带有标志符时,数据字长要加长,而指令字长将缩短。程序的总的存储容量是加长还是缩短,要具体分析。
  采用标志符数据表示方法主要优点有:简化了指令系统,指令中的操作码只需指出操作种类,不必指出数据类型,指令的条数必然减少很多;简化了程序设计,与人们的使用习惯更接近,缩小了人与机器之间的语义差距,从而使程序设计变得更加容易;简化编译器,使高级语言与机器语言之间的语义差距大大缩短了;支持数据库系统,一个软件不加修改就可适用于多种数据类型;方便软件调试,数据中的陷井位为软件的跟踪和调试提供了极大的方便。
  采用标志符数据表示方法的主要缺点是:指令的执行速度降低,在指令执行过程中要对每个标志符逐个进行解释,并判断数据是否相容;硬件复杂度增加,由于要用硬件实现数据相容性、一致性测试,实现数据类型的自动转换,并解释所有标志符。