欢迎光临散文网 会员登陆 & 注册

计算机组成原理(二)——数据的表示和运算

2023-01-29 19:30 作者:UCLmsc  | 我要投稿
  • 1 机器数及其特点

    • 1.1 需考虑的因素

      • 支持的数据类型、能表示的数据范围、能表示的数据精度、存储和处理的代价、是否有利于软件移植

    • 1.2 机器内的数据表示

      • 真值:+、-

      • 机器数:0、1

      • 常见机器数

      • 移码:[X]_移(正负数都是2^n + X),表示浮点数的阶码。数值位与X的补码相同,符号位与补码相反。

      • 补码:[X]_补(正数X,负数2^(n + 1) + X  mod  2^(n + 1))

      • 反码:[X]_反(正数X,负数2^(n + 1) + X - 1),运算相对原码简单-符号位参加运算没只需要设置加法器,但符号位的仅为需要加到最低位;0的表示不唯一。

      • 原码:[X]_原(正数X,负数2^n - X);符号位不参加运算,要设置加法、减法器;0的表示不唯一。

  • 2 定点与浮点数据表示

    • 2.1 定点数据表示

      • 可表示定点小数和整数,定点小数X_0.X_1X_2......X_n,定点整数X_0X_1X_2......X_n.(小数点的位置不一样);定点小数表示数的范围-1≤x≤1-2^-n,定点整数表示数的范围-2^n≤x≤2^n - 1。

      • 定点数据表示数的不足:数据表示范围受字长限制。

      • 定点整数的编码表示:原码、反码、补码、移码;定点小数的编码表示:原码、反码、补码。

      • 定点小数和定点整数再位数扩展时,拓展位置不一样。如4bit→8bit,小数[x]原=1.110→[x]原=1.1100000;整数[x]原=1,110→[x]原=1,0000110。

  • 2.2 浮点数据表示

    • 是把数的范围和精度分别表示的一种数据表示方法。

    • 使用场合:当数的表示范围超出了定点数能表示的范围时。

    • 一般格式:N = 2^e×m,e阶码位数,决定数据范围;m尾数位数,决定数的精度。

    • IEEE 754格式:单精度(8位偏指数E+32位有效尾数M);双精度(11位偏质数E + 52位有效尾数M)。指数采用偏移值,其中单精度偏移值为127,双精度为1023,将浮点数的阶码值变成非负整数,便于浮点数的比较和排序IEEE754尾数形式为1.XXXXXX,其中M部分保存的是XXXXXX(1被隐藏),从而可保留更多的有效位,提高数据表示的精确度。

    3 常用数据校验方法

        校验的必要性:受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误;若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观)。

    • 3.1 数据校验的基本原理

      • 基本原理:增加冗余码(校验位)——有效信息(k位),校验信息(r位)。

      • 码距的概念:即编码的距离——同一编码中,任意两个合法编码之间不同二进数位数的最小值。如0011与0001的码距位1,一位错误时无法识别;而0000、0011、0101、0110、1001、1010、1100、1111等编码码距为2。任何一位发生改变,如0000变成1000就从有效编码变成了无效编码,容易检测到这种错误。校验码中增加冗余项的目的就是为了增大码距。

      • 码距与检错或纠错能力的关系:①码距≥e+1:可检测e个错误。②码距≥2t+1:可纠正t个错误。③码距≥e+t+1:可纠正t个错误,同时检测e个错误(e≥t)。

      • 选择码距要考虑的因素:码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大,编码效率低,编码电路也相对复杂;选择码距必须考虑信息发生差错的概率和系统能容许的最小差错率。

    • 3.2 奇偶校验

      • 基本原理:有效信息(k位),校验信息(r=1位)。

      • 编码规则:根据有效信息计算校验信息位,使校验码(数据+1位校验信息)中1的个数满足奇/偶校验的要求0001→00011(偶校验)    0001→00010(奇校验)

      • 检错方法与电路:奇校验检错码G = C ⊕ X1 ⊕ X2 ⊕... ⊕ Xn,G = 0表示数据正常否则表示出错。偶校验检错码G = C ⊕ X1 ⊕ X2 ⊕... ⊕ Xn,G = 0表示数据正常否则表示出错。

      • 偶校验的硬件实现:各信息进行异或(模2加)运算,得到的结果即为偶校验位。(若结果为1说明出错)

      • 特点:编码与检错简单、编码效率高、不能检测偶数位错误,无错结论不可靠,是一种“错误检测”码、能检错但不能定位错误所以不能纠错、码距为2。

      • 改进的奇偶校验:双向奇偶校验、方块校验、垂直水平校验。

      • 工程上的应用:一般在同步传输方式中常采用奇校验,异步传输方式中常采用偶校验。

    • 3.3 CRC校验

      • 基本原理:增加冗余码(校验位)。有效信息(k位),校验信息(r=1位)。N = k + r ≤ 2^r - 1(一共设置r为校验位,能表示2^r种状态,1种状态表示没错,2^r-1种状态能表示这么多种错误)

      • 生成多项式G(x):收发双方约定的一个(r+1)位二进制数,发送方利用G(x)对信息多项式做模2除运算,生成校验码。接收方利用G(x)对收到的编码多项式做模2除运算检测差错及错误定位。

      • G(x)应满足的条件:①最高位和最低位必须为1;②当被传送信息(CRC码,循环冗余校验)任何一位发生错误时,被生成多项式做除后应该使余数不为0;③不同位发生错误时,模2除运算后余数不同;④对不为0余数继续进行模2除运算应使余数循环。

      • 模2运算:①加/减 (异或,加不进位,减不借位);②模2除法:按模2减,求部分余数,不借位。③上商原则:部分余数首位为1时,商为1,减除数;部分余数首位为0时,商为0,减0:当部分余数的位数小于除数的位数时,该余数即为最后余数。

    • CRC编码方法:①根据待校验信息的长度k,按照k+r≤2^r-1确定校验位的位数。举例:对4位信息1100进行CRC编码,根据4+r≤2^r-1,得r_min = 3。②根据r和生成多项式的选择原则,选择位数为r+1的生成多项式G(X)=1011[查表]。③有效信息(k位),校验信息(r位)→1100 000(补上r个0,相当于左移r位)。④对Q(X)'按模2运算法则除G(X),求CRC编码中的r位校验信息。⑤用得到的余数替换Q(X)'的最后r位得到对应的CRC编码,1100 000 → 1100 010。

    • CRC的检错和纠错:接收方利用G(X)对收到的编码多项式做模2除运算,余数为0说明传输没有错误,余数不为0是有错误(出错位不同,余数也不同)。

  • 3.4 海明校验

    • 海明码是一种利用奇偶性来差错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置插入K个校验位,通过扩大码距来实现检错和纠错。

    • 基本原理:增加冗余码(校验位),N = k + r ≤ 2^r - 1。设k+r位海明码从左到右依次为第1,2,3,…,k+r位,r位校验位记为Pi(i=1,2,.,r),分别位于k+r位海明编码的第2^(i - 1)(i=1,2,…,r)位上,其余位依次放置被校验的数据位。

    • (7,4)海明校验码中校验位和被校验信息位的排列如下:

      海明码位号H_j:1 2 3 4 5 6 7 8 9 10 11

      P和b的分布: P1 P2 b1 P3 b2 b3 b4 P4 b5 b6 b7

    • H_j位的数据被编号小于j的若干个海明位号之和等于j的校验位所校验。由此可采用偶校验计算出P1~P4四个校验位的值。

    • 设置指错字G4 G3 G2 G1。G4 G3 G2 G1为0则表明无错误,反之指出出错位的海明码位号。

    • 举例:

                本例就7位数据组成:D4D3D2D1+P2P1P0

                7 6 5 4 3 2 1

                D4 D3 D2 P2 D1 P1 P0

                1 0 1 1

                7=4+2+1 ==> 第4位 P2,第2位P1,第1位 P0 这3个校验位共同校验

                6=4+2==> 第4位 P2,第2位P1 这2个校验位共同校验

                5=4+1 ==> 第4位 P2,第1位 P0 这2个校验位共同校验

                3=2+1 ==> 第2位P1,第1位 P0 这2个校验位共同校验

                校验码计数,异或运算:

                P2 = D7^D6^D5=1^0^1=0

                P1 = D7^D6^D3=1^0^1=0

                P0 = D7^D5^D3=1^1^1=1

                校验码为:001

                传输数据为: 1 0 1 0 1 0 1

    • 检错和纠错原理

        接收方依据同样的规则重新计算三位校验码的值。而后与接收到的校验码进行异或。当数据无误时,产生的校验码无误,若接收到的校验码有误,那么这不同的2个校验码异或,必然为1.

        若某位的校验码最终异或结果为1,则表示产生了错误,找出错误位之后,就可以纠错了,纠错方法就时将该为逆转。

  • 4 运算方法与运算器

    • 4.1 定点数运算及溢出检测

      • 定点数加法运算:[x]补 + [y]补 = [x + y]补 mod 2^(n + 1)。例:X = +10010, Y = -10101 求 X + Y。[X]补 = 010010  [Y]补 = 101011  [X + Y]补 = 010010 + 101011 = 111101  补码再转成真值 所以 X + Y = -00011.

      • 定点数减法运算:[x - y]补 = [x]补 - [y]补 = [x]补 + [-Y]补。例:已知[Y]补 = 10011,[-Y]补 = 01101。通过右向左扫描[Y]补,在遇到数字1及之前,直接输出遇到的数字遇到1之后,取反输出,即可得到[-Y]补,反之亦然。

      • 溢出的概念:运算结果超出了某种数据类型的表示范围。溢出只可能发生在同符号数相加时,包括[X]补与[Y]补;[X]补与[-Y]同号;

      • 溢出的检测方法1:对操作数和运算结果的符号位进行检测——当结果的符号位与操作数的符号不相同时就表明发生了溢出。设X0,Y0为参加运算数的符号位,S0为结果的符号位。V = X0Y0S0 + X0Y0S0,当V=1时,运算结果溢出。

      • 溢出的检测方法2:对最高数据位进位和符号进位进行检测,设运算时最高数据位产生的进位为C1,符号位产生的进位为C。溢出检测电路为:V=C0⊕C1。

      • 溢出的检测方法3:用变型补码,[X]补 = Xf1 Xf2 ....X1 X2 X3... Xn,溢出的判断:V=X1⊕X2。

      • 无符号数运算的溢出判断:无符号数加法的溢出可用ALU的进位表示;无符号数减法的溢出也可用带加/减功能的ALU的进位取反后表示。

    • 4.2 定点数补码加、减运算器设计

      • 四位串行加法器的设计(基于一位全加器FA)

      • 四位串行加/减法器设计

      • 带溢出检测功能的加/减运算器

      • 带无符号数溢出检测功能的加/减运算器

      • 串行进位

      • 多位串行进位与并行进位运算器

    • 4.3 原码一位乘法

      • 移位操作及其意义:逻辑左移——数据整体左移一位,最高位D_15被移出至C_F,最低位D_1补0。算术左移——数据整体左移一位,最高位D_15被移出至C_F,最低位D_1补0,相当于乘2。逻辑右移——数据整体右移一位,最高位D_15补0,最低位D_1被移出。算术右移——数据整体右移一位,最高位D_15被复制填补D_15,最低位D_1被移出,相当于除以2。

      • 符号位单独参加运算,数据位取绝对值参加运算。

      • 运算法则:设[X]原=X0 X1 X2 Xn  [Y]原= Y0 Y1 Y2 Yn则:P0=XYo |Pl=lYI·|X|.

      • 例:

  • 4.4 补码一位乘法

    • 基本方法:设[X]补=X-0X1X2X3Xn    [Y]补=Y0Y1Y2Y3…Yn,可证明:[X·Y]补=[X]补(0.Y1Y2Y3...Yn)-Y0·[X]补。进一步展开合并后可得:[X·Y]补=[X]补·Σ(y_(i+1) - y_i)2^(-i)  (符号位参与运算)。

    • 运算规则:(1)如果y_n+1=y_n部分积加0,部分积算术右移1位;(2)如果y_n+1y_n=10,部分积加[x]补,部分积算术右移1位(3)如果y_n+1 y_n=01,部分积加[-x]补,部分积算术右移1位.重复进行n+1步,但最后一步不移位。包括一位符号位,所得乘积为2n+1位,其中n为数据位位数.

    • 特殊问题:i=n时,y_n+1=0;y_n+1在乘数寄存器Y后增加的一位;部分积和乘数寄存器均右移;

  • 4.5 乘法运算器设计

    • 4.6 定点数除法

      • 手工除法运算方法——启示:除法可通过减法实现问题:除数移位次数多,需要长度为2n位的余数寄存器,如何判断每步是否够减。

      • 原码恢复余数除法

      • 原码加/减交替除法运算方法(不恢复余数法)

      • 阵列除法——可控制加/减法(CAS)单元;基于CAS的阵列除法

    • 4.7 浮点数加减运算

      • 规格化浮点数的概念:由于浮点数是将数据的表示范围与精确度分别表示的数据表示方法,若不对浮点数的表示作出明确规定,同一个浮点数的表示就不唯一;规格化浮点数是指把一个浮点数按指定的格式进行转换;

      • 规格方法:当尾数结果为00.0Φ.Φ或11.1ΦΦΦΦ,需要左规格化即将尾数向左移动每移动一次,阶码减1,直到尾数形式为00.1ΦΦ或11.0Φ..Φ。当尾数的结果为01.Φ.Φ或10.ΦΦΦΦ,表明尾数求和的结果>1,此时仅需要执行一次右移规格化,阶码加1,尾数形式即为00.1Φ.…Φ或11.0Φ.Φ

      • 浮点数加减运算方法及步骤:1)对阶——求阶差;右移阶码小的浮点数的尾数并同步增加其阶码,直至两数阶码相等。2)尾数加/减——尾数加/减运算(用对阶后的尾数)3)结果规格化4)舍入右移规格化时可能丢失一些低位的数值位,为提高精度,可采取舍入的方法:0舍1入:若右移出的是1则在最低位加1:恒置1:只要数字位1被移掉,就将最后一位恒置成1。

      5)溢出处理

      • 浮点数的溢出标志:阶码溢出

      • ·阶码上溢:阶码的符号位为01

      • ·阶码下溢:阶码的符号位为10

  • 5 习题

    • (41360000)H 转十进制:先转二进制01000001001101100000000000000000,再求S E M,S是0,E是10000010,M是剩下的。E转十进制是130(130- 127 = 3,所以后面×2^3)。尾数写为1.M是1.011011,移动3位是1011.011,转为十进制是11.375。

    • (41A4C000)H 转十进制:4就是0100,A是十进制10即1010,C是十进制12即1100,后面补全。就是0100000110100100110000000000000,第一个0是S(sign阶符),后面八位是E(exponent阶码),最后是M(mantissa尾数)。S的部分是0,E的部分10000011转为十进制是131(131- 127 = 4,所以后面×2^4),M的部分要写成1.M的形式即1.010010011(后面零不用管),写成1.M×2^4,即10100.10011,转成十进制是20.59375。


二进制后缀B,Binary
八进制后缀O,Octonary
十进制后缀D,Decimal
十六进制后缀H,Hexadecimal
异或⊕是模2加
带符号扩展就是将原数据的符号位扩展到增加的高16位中,上述两个数的符号分别为0和1,因此,符号扩展后分别得到16个0和16个1,用十六进制分别表达成0000  FFFF
  • 6 术语

  • 布斯算法(Booth’s Algorithm):是一种补码乘法算法,用于带符号数的乘法运算,由Booth提出。算法的基本思想是在乘数的末位添加一个“0”,乘数中出现的连续“0”和连续“1”处不进行任何运算;出现“10”时,做减法;出现“01”时,做加法。每次只做一位乘法,因而每一步都右移一位。

  • 算术逻辑部件(Arithmetic Logic Unit):用来执行各种算术和逻辑运算的部件。有两个源输入端和一个结果输出端,并具有操作控制和低位进位输入端,以及输出结果是否为0等标志输出端。

  • 先行进位加法器(Carry Lookahead Adder):先行进位加法器也称为并行进位加法器,它通过引入进位生成函数和进位传递函数,使得进位之间相互独立、并行产生。因而能够快速得到最终整个和数。故也称为快速加法器。

  • 进位传递函数(Propagate Carry):n位加法器中,每一位定义一个函数:pi = Ai | Bi ( “|” 表示或操作),该函数的含义是,只要函数值pi为1,那么,低位来的进位一定能传递到高位。这个函数称为进位传递函数。

  • 进位生成函数(Generate Carry):n位加法器中,每一位定义一个函数:gi = Ai &Bi (“&”表示与操作)。该函数的含义是,只要函数值gi为1,不管低位有没有进位,一定能生成向高位的进位。这个函数称为进位生成函数。

  • 先行进位(Carry Lookahead):通过引入两个进位辅助函数(进位生成和进位传递),使得加法器的各个进位之间相互独立、并行产生。这种进位方式也称为并行进位方式。

  • 行波进位加法器(Ripple Carry Adder):行波进位加法器也称为串行进位加法器,它通过n个全加器按照串行方式连起来实现。进位方式采用行波进位方式。

  • 行波进位(Ripple Carry):在进行n位加法运算时,低位向高位的进位采用像“行波”一样进行串行传递的方式,称为行波进位方式。

  • 加法器(Adder):能进行n位加法运算的部件。

  • 全加器(Full Adder,(3, 2) adder):不仅考虑本位两个加数而且考虑低位进位来生成本位和的一位加法器。

  • 半加器(Half Adder):只考虑本位两个加数而不考虑低位进位来生成本位和的一位加法器。

  • 扩展器(Extender):进行扩展(填充)操作的部件,称为扩展器。一般输入为n位,输出为2n位。

  • 符号扩展(Sign extend):对补码整数在高位直接补符的操作,称为“符号扩展”。

  • 零扩展(Zero extending):对无符号整数进行高位补0的操作称为“零扩展”。

  • 扩展操作(extending):在计算机内部,有时需要将一个取来的短数扩展为一个长数,此时要进行填充(扩展)处理。有“零扩展”和“符号扩展”两种。

  • 移位器(Shifter):具有移位功能的寄存器,称为移位寄存器。

  • 循环(逻辑)移位(rotating Shifte):循环移位是一种逻辑移位,移位时把高(低)位移出的一位送到低(高)位,即:左移时,各位左移一位,并把最左边的位移到最右边;右移时,各位右移一位,并把最右边的位移到最左边。

  • 算术移位(arithmetic Shifte):算术移位是对带符号数进行的,移位前后符号位不变。左移一位,数值扩大一倍,相当于乘2操作;右移一位,数值缩小一半,相当于除2操作。移位时,符号位不动,只是数值部分进行移位。对于不同的编码,其移位规则不同。 ① 原码 左移:高位移出,末位补0。移出非零时,发生溢出。 右移:高位补0,低位移出。移出时进行舍入操作。 ② 补码 左移:高位移出,末位补0。移出非符时,发生溢出。 右移:高位补符,低位移出。移出时进行舍入操作。

  • 逻辑移位(logical Shifte):逻辑移位是对无符号数进行的移位,把无符号数看成一个逻辑数进行移位操作。左移时,高位移出,低位补0;右移时,低位移出,高位补0。

  • ASCII码(American Standard Code for Information Interchange):目前计算机中使用最广泛的西文字符集及其编码,即美国标准信息交换码(American Standard Code for Information Interchange),简称ASCII码。

  • 逻辑数据(Logic Data):逻辑数据用来表示命题的“真”和“假”,分别用 “1”和“0”来表示。进行逻辑运算时,按位进行。

  • BCD码(Binary Coded Decimal,BCD):十进制数用二进制编码的形式表示称为BCD码。

  • 机器零(Machine “0”):用一种专门的位序列表示“机器0”。例如,IEEE754单精度浮点数中,用“0000 0000H”表示“+0”,用“8000 0000H”表示“– 0”。当运算结果出现阶码过小时,计算机将该数近似表示为“机器0”。

  • 舍入(Rounding):舍入是指数值数据右部的低位数据需要丢弃时,为保证丢弃后数值误差尽量小而考虑的一种操作。例如,定点整数“右移”时、浮点加/减运算中某数“对阶”时、浮点运算结果“右规”时都会涉及到舍入。

  • 右规(Right Normalize) :在浮点数运算中,当尾数最高有效位有进位时,发生尾数溢出。此时,进行“右规”操作:尾数右移一位,阶码加1,直到尾数为规格化形式为止。右规过程中,要判断是否发生溢出。此时,只要阶码不发生上溢,则浮点数不会溢出。

  • 左规(Left Normalize):在浮点数运算中,当一个尾数的数值部分的高位出现0时,尾数为非规格化形式。此时,进行“左规”操作:尾数左移一位,阶码减1,直到尾数为规格化形式为止。

  • 规格化数(Normalized number):为了使浮点数中能尽量多地表示有效位数,一般要求运算结果用规格化数形式表示。规格化浮点数的尾数小数点后的第一位一定是个非零数。因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1就行;对于补码表示的尾数,只要看符号位和尾数最高位是否相反。

  • 保护位(Guard bit):为了使数据有效位在右移时最大限度地保证不丢失,一般在运算中间值后面增加若干数据位,这些位用来保存右移后的有效数据,称为保护位。增设保护位后,能保证运行的中间结果的有效位数,但最终必须将结果的保护位去掉,以得到规定格式的浮点数,此时要考虑舍入。

  • 上溢(Overflow):在浮点数运算中,当一个浮点数的指数超过了最大允许值,此时,浮点数发生上溢(即:向∞方向溢出)。如果结果是正数,则发生正上溢(有的机器把值置为+∞);如果是负数,则发生负上溢(有的机器把值置为-∞)。这种情况为软件故障,通常要引入溢出故障处理程序来处理。

  • 下溢(Underflow):在浮点数运算中,当一个浮点数的指数比最小允许值还小,此时,浮点数发生下溢。一般机器把下溢时的值置为0。此时,不发生溢出故障。

  • 溢出(Overflow):溢出是指一个数比给定的格式所能表示的最大值还要大,或比最小值还要小的现象。因为无符号数、有符号定点数和有符号浮点数的位数是有限的,所以,都有可能发生溢出,但判断溢出的具体方法不同。

  • 对阶(align exponent):浮点数加/减运算时,在尾数相加/减之前所进行的操作称为对阶。对阶时,需要比较两个阶的大小。阶小的那个数的尾数右移,阶码增量。右移一次,阶码加1,直到两数的阶码相等为止。

  • 双精度浮点数(Double precision floating point):IEEE754标准规定的64位浮点数格式表示的浮点数。阶码是11位,用移码表示,偏置常数为1023,尾数用原码表示,规格化浮点数的最高位“1”隐含不表示,显式表示的尾数有52位,所以一共有53位尾数。

  • 单精度浮点数(Single precision floating point):IEEE754标准规定的32位浮点数格式表示的浮点数。阶码是8位,用移码表示,偏置常数为127,尾数用原码表示,规格化浮点数的最高位“1”隐含不表示,显式表示的尾数有23位,所以一共有24位尾数。

  • 移码(excess notation,biased notation):移码是一种用来表示浮点数阶码的编码方案。它的编码规则是:将真值加上一个偏置常数。因为在浮点数的加减运算中,要进行对阶操作,需要比较两个阶的大小。用移码表示阶码后,使得所有数的阶码都是一个正整数,比较大小时,就只要按高位到低位顺序比较就行了,因而,移码主要用来表示阶码,可以简化阶码的比较过程。

  • 阶码(exponent):E称为浮点数的指数或阶码,用一个定点整数来表示。

  • 尾数(mantissa,  significand):M称为浮点数的尾数,用一个定点小数来表示。

  • 浮点数(Floating-point number ):浮点数是计算机中可以指定小数点在不同位置的有符号数。任意一个浮点数F可写成:F=(-1)^S M 2 ^E的形式。

  • 变形补码(Four’s complement):变型补码是一种双符号位补码。早期计算机用双符号位来检测定点整数是否发生溢出。采用双符号位的补码相当于在原来的数位上增加了一位。所以也称为4-补码。采用“变形补码”进行溢出检测时的判断规则为:“当结果的两个符号位不同时,发生溢出”。有时用双符号位来保存运算时进到高位的数值部分。

  • 补码(Two’s complement):一种对定点整数或定点小数进行二进制编码的编码方案。其编码规则如下:正号“+ ”用符号位“0”表示,负号“-” 用符号位“1”表示,正数的数值部分不变,负数的数值部分是各位取反,末位加1。这种编码较原码复杂,但由于它是一种模运算系统,计算机处理很方便,50年代以后,整数就都用它来表示。

  • 反码(One’s complement):一种对定点整数或定点小数进行二进制编码的编码方案。由于计算机处理反码没有补码方便,反码已经不被再用了。

  • 原码(Signed magnitude):一种对定点整数或定点小数进行二进制编码的编码方案。它的编码规则是:正号“+ ”用符号位“0”表示,负号“-” 用符号位“1”表示,数值部分不变。这种编码简单,但计算机处理不方便,50年代以后,就不用它来表示整数。但现代计算机中,一般用它来表示浮点数的尾数,如:IEEE754标准。

  • 定点数(Fixed-point number):定点数是计算机中小数点固定在最左边或最右边的有符号数,有定点整数和定点小数两种。定点整数的小数点总是约定在数的最右边,主要用来表示现实世界中的整数和浮点数中的指数。定点小数的小数点总是约定在数的最左边,主要用来表示浮点数中的尾数。定点数的编码方式有原码、反码、补码和移码。整数常用补码来表示;浮点数的尾数一般用原码小数来表示;浮点数的指数一般用移码来表示。

  • 有符号数(Signed number):在计算机内部对正、负号进行编码的数。有符号数又分为定点数和浮点数。定点数有定点整数和定点小数两种。现实世界中的整数在计算机内部由定点整数表示。现实世界中的实数在计算机内部由浮点数表示。

  • 无符号数(Unsigned integer):当一个编码的所有二进位都用来表示数值时,该编码表示的就是无符号数。可以看成是一种正整数。常用无符号数来进行地址运算。

  • 基数(radix,base):进位计数制(或称数字系统)的“底数”或“基”。例如,二进制数的基数是“2”,十进制数的基数为“10”,十六进制的基数为“16”。

  • 非数值数据(non-numerical data):数值数据是指在数轴上没有确定的值的数据。像逻辑数据、西文字符、汉字字符等都是非数值数据。

  • 数值数据(numerical data):数值数据是指有确定的值的数据。数值数据在数轴上能找到其对应的点,可以比较其大小。确定一个数值数据的值有三个要素:进位计数制、定/浮点表示和数的编码表示。也就是说,给定一个数字序列,如果不说明这个数字序列是几进制数、小数点的位置在哪里、采用什么编码方式,那么这个数字序列的值是无法确定的。也就是说,同一个数字序列可能有不同的值。在计算机中数值数据有无符号数和有符号数两种。

  • 机器数(Computer word):通常将数值数据在计算机内部编码表示的数称为机器数。

  • 真值:通常将数值数据在计算机内部编码表示的数称为机器数,而机器数真正的值(即原来带有正负号的数)称为机器数的真值。


    计算机组成原理(二)——数据的表示和运算的评论 (共 条)

    分享到微博请遵守国家法律