1.7 IA-32结构的数据类型
1.7.1 计算机中的数据
根据国际标准化组织(ISO)对数据的定义认为:通常意义下,数字、文字、图形、图像,活动图像(视频)和声音等都可认为是数据。对计算机而言,是不能直接处理以上数据的,而必须采用特殊的表达形式一这就是二进制编码形式,才能由计算机进行计算,转换、存储、排序、传送、通信等处理。
在计算机中,通常又将这些处理的数据分为数值型数据和非数值型数据。数值型数据是指日常生活中经常接触到的数字数据,主要用来表示数量的大小,进行计算;而其他的文字、图形、图像、视频图像和声音都统称为非数值型数据。非数值型数据多数来自多种媒体。因此,现代计算机已不仅是一种计算工具,而是能够交互式综合处理多种不同媒体信息的多媒体计算机。
1.7.2 常用的名词术语
在IA-32结构的微计算机中用二进制表达数据时,常用的名词术语如下。
位(Bit):指一个二进制位,是计算机中信息表示的最小单位。
字节(Byte):指相邻的8个二进制位。计算机中存储器单元的容量(内容)用字节表示。
字(Word)和字长:字是计算机内部进行数据传递、处理的基本单位。通常它与计算机内部的寄存器、运算器、数据总线宽度相一致;字长是指一个字所包含的二进制位的位数。常见的微计算机的字长有8位、16位、32位和64位之分。但是目前在PC微机中常把一个字定义为16位,即2字节。
双字(Double Word)、四字(Quad Word)和双四字(DQW):双字为32位,即4字节,是32位微计算机的字长;四字为64位,即8字节,是32位微机的双倍精度字,是Intel 80486微处理器引入IA-32结构的结果;双四字为128位,即16字节,是Pentium微处理器引入IA-32结构的结果。
1.7.3 数值型数据的表示法
1.无符号数
计算机中流动的两类信息,即数据信号(包括地址信号和数据信号)和控制命令都是用二进制数表示的,并用后缀B标示。例如,01101000B是8位二进制数。除用二进制数表示外,在数位较多时,还可用十六进制数表示,并用后缀H标示,如0110100011111010B=68FAH。
为照顾人们的习惯,计算机中也用十进制数。十进制数是用二进制编码表示的,例如,8421BCD码。每位十进制数用4位二进制数表示,逢10进1。例如,6829的8421BCD为0110100000101001。
2.带符号数
计算机处理的数据除无符号整数外,还有带符号数。带符号数中的符号也用二进制数表示。最高位(MSB)表示数的符号:“0”表示正号,“1”表示负号。通常称这种数码化了的带符号数为机器数。机器数可用不同的码制来表示。常用的有原码、补码和反码。微计算机和多数计算机一样,常采用补码表示法。补码的定义为:
其中,2n称为模数,故补码又称2补码,又因为2n=(2n-1)+1,而(2n-1)为n个1,因此(2n-1)-|x|称为1的补码(即反码)。这样,求正数补码,就采用符号-绝对值表示;求负数补码,可先写出该负数对应的正数的补码,然后,将其按位取反(即0变1,1变0),最后,在末位加1。
【例1-1】 机器字长为8位,求[+105]补和[-105]补。
[+105]补=0110,1001=69H
按位求反:1001,0110
末位+1:1001,0111
即[-105]补=1001,0111=97H。
【例1-2】 若机器字长为16位,求[+105]补和[-105]补。
这里介绍一种符号扩展法用来将8位补码数扩展为16位补码数,具体做法是:把8位机器数的符号位扩展到高8位上去;同理,符号扩展法也可用来将8位补码数扩展为32位补码数,如下所示。
反过来,已知补码,求所代表的真值时,对正数补码求真值,用按位计数法即可;而对负数补码求真值,则根据|x|=2n-[x]补=(2n-1-[x]补)+1,即利用按位变反加1即可。
在机器里,为了扩大数的范围,可用两个或多个机器字来表示一个机器数,这种数称为双字长的双倍精度数或多字长的多倍精度数。
8位机器数和IA-32结构中带符号整数的编码(这里,用16进制数表示)及数的范围分别如表1-2和表1-3所示。
表1-2 8位数表示法的对照表
表1-3 IA-32结构的带符号整数编码
1.7.4 非数值型数据的表示法
1.字符的表示法
计算机中除了处理数值信号外,还需要处理字符或字符串信息。例如,计算机和外设的键盘、打印机、显示器之间的通信都是采用字符方式输入、输出的。英文字符在机器中也是二进制数,但这种二进制数是按特定规则编码表示的。微计算机中普遍采用美国信息交换标准代码ASCII(American Standard Code for Information Interchange),包括英文字母的大小写、数字、专用字符(如+,-,,/,空格等)以及非打印的控制符号(如换行LF,回车CR,换码ESC等)共计128种编码。这种代码用1字节表示,其中低7位为ASCII码,最高位置为0。ASCII字符表如表1-4所示。
表1-4 ASCII字符表(7位码)
注:表中二进制代码按顺序b6b5b4b3b2b1b0排列。
NUL 空 HT 横向列表 DC1 设备控制1 SUB 减
SOH 标题开始 LF 换行 DC2 设备控制2 ESC 换码
STX 正文结束 VT 垂直列表 DC3 设备控制3 FS 文字分隔符
ETX 本文结束 FF 走纸控制 DC4 设备控制4 GS 组分隔符
EOT 传输结果 CR 回车 NAK 否定 RS 记录分隔符
ENQ 询问 SO 移位输出 SYN 空转同步 US 单元分隔符
ACK 承认 SI 移位输入 ETB 信息组传送结束 SP 空格
BEL 报警符 DLE 数据链换码 CAN 作废 DEL 作废
BS 退一格 EM 纸尽
汉字字符采用我国1981年公布的“国家标准信息交换用汉字编码基本字符集(GB2312——1980)”。该标准规定一个汉字用2字节进行编码,即可编出256×256种=65536码。为区分汉字编码和ASCII码,用每字节的最高位来区分。这就是所谓双7位汉字编码,可编出128×128=16384码,称为汉字交换码(也叫国标码)。国标码的双字节最高位用“1”表示,ASCII码则用“0”表示。
2.图形、图像、声音的表示
计算机中除能处理数值,字符外,还能处理图形、图像和声音等各种信息,这类计算机称为多媒体计算机。
在多媒体计算机中所处理的多媒体信息也是采用二进制编码来表示的。处理时,首先需将图、像、声各种模拟量(如声音的波形、图像像素坐标、颜色等)经过采样,量化和编码转换成数字信息,这一过程称为模/数转换。由于这一过程得到的数字化信息非常大,为节省存储空间,提高处理速度,往往需要进行压缩后再存储到计算机中。经过计算机处理过的数字化信息又需要还原(解压缩),即经过数/模转换为模拟信息的声音、图像或通过扬声器播放声音,或通过显示器显示画面、图像。
1.7.5 基本数据类型
1.基本数据类型
IA-32结构的基本数据类型是指字节、字、双字、四字和双四字,如图1-17所示。
2.基本数据类型在内存储器中的存放顺序
图1-18示出IA-32结构中基本数据类型作为操作数在内存储器中的字节存放顺序。每种数据类型的低字节为N,它存放在最低地址单元中。最低地址也就是最低字节数的地址。
图1-17 IA-32结构的基本数据类型结构
图1-18 基本数据类型在内存中的字节存放顺序示意图