第一章补充内容
1.4.5定点数与浮点数
计算机在处理实数时遇到了一个表示方法的难题,因为在计算机内存,或者叫寄存器中是没有专门的小数点位的,而在实际运算过程中却往往又是包括小数点的小数。如果某种数据编码约定实数的小数点固定在某一个位上,则这个数称之为“定点数”(Fixed Point Number二进制小数如何转换成十进制)。相反,如果某种编码约定实数的小数点位置是可变的,则这个数称之为“浮点数”(FloatingPoint Number)。但是要注意的是,在寄存器中小数点的位置是隐含的,没有专门的小数点位。
1.定点数
对于定点数来说,如有一种编码是用4位来表示实数的,并且约定小数点在中间位置,则可以得出这种编码所能表示的最大整数部分和小数部分均为99(假设用十进制表示)。显然定点数这样的约定限制了编码所能表示数的范围。
根据小数点的位置的不同,定点数又分为“定点整数”和“定点小数”两种。如果小数点在有效数值部分最低位之后,这样的数称之为“定点整数”(纯整数),如1110101.(其实这里的小数点
在寄存器中是没有标注的,是隐含的)。但要注意,计算机中的机器数都是带符号的,所以最高位都是符号位,不是实际的数值位。正因如此,这里的“”所对应的数是-53,而不是+117。
如果小数点位置在符号位之后、有效数值部分最高位之前小数点在最高有效数值位之前(这里的小数点在寄存器中也是隐含的,没有小数点专门的位),这样的数称之“定点小数”(纯小数),如0.1010101(注意整数部分仅一位,而且是符号位,对应为)。
当然还可以既有整数部分,又有小数部分的定点数(当然,此时不能直接说它们是“定点整数”,也不能说它们是“定点小数”)。以人民币为例,我们日常经常看到的¥125.10,¥873.25之类的数就是一个定点数,约定小数点后面有两位小数,用来表示角与分。
【经验之谈】这时可能就有读者问,没有标点符号位,那计算机怎么确定数值的大小?这就是前面说到的“约定”了。这里的“约定”是由计算机程序指定的,一种编码的二进位数是固定的,如果约定了小数点的位置,则这里面的数的小数点位置就确定了,计算机就可以确定不同数值的大小了。如某种编码用4个二进制位表示,且约定小数点位于最后一位前,最则可以确定诸如1101、0100、1001等这些数所对应的十进制值分别为-2.5、+2.0、-0.5(注意,最高位为符号位)。
根据前面的介绍,我们可以很容易地得出定点整数的表示范围是:1≤ | x | ≤ 2n - 1,定点小数的表示范围是:2- n ≤ | x | ≤ 1 - 2- n,“ | x |”为定点的绝对值,n是编码所采用的位数。
对于定点数,如果机器字长为n,则各种码制所表示的带符号数的取值范围如表1-4所示。
表1-4机器字长为n时表示的带符号数取值范围
码制 | 定点整数 | 定点小数 |
原码 | –(2 n–1–1)~+(2 n–1–1) | –(1–2–( n–1))~+(1–2–( n–1)) |
反码 | –(2 n–1–1)~+(2 n–1–1) | –(1–2–(n–1))~+(1–2–( n–1)) |
补码 | –2 n–1~+(2 n–1–1) | –1~+(1–2–( n–1)) |
移码 | –2 n–1~+(2 n–1–1) | –1~+(1–2–( n–1)) |
当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为“下溢”;大于定点数能表示的最大值时,计算机将无法表示,称为“上溢”,上溢和下溢统称为“溢出”。
2.浮点数
从上面的分析可以看出,“定点数”表示方法的最大不足就是其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。所以绝大多数现代的计算机系统采纳了一种称之为“浮点数”的表示方式。所谓“浮点数”就是在寄存器中数值的小数点位置是可变的。如是4位编码,小数点位置可以在符号位后的第一位,、第二位,或者第三位。这样可以表示的数值范围就大许多了。
“浮点数”采用类似科学计数法(Scientific Notation)的方式来表达实数。比如 123.45 用十进制科学计数法可以表达为 1.2345 × 102,其中 1.2345 为尾数,10 为基数,2 为指数。具体的说,在计算机中通常把浮点数分成“符号位”(用S表示)、“指数”(用P表示)和“尾数”(用M表示)三部分来表示。其中符号位S只有0和1,分别表示正负;指数P通常使用移码表示(移码和补码只有符号位相反,其余都一样),尾数M是一个定点小数。IEEE754定义了单精度浮点数和双精度数浮点数,单精度浮点数共有32位(4字节),双精度浮点数共有64位(8字节)。它们所对应的包括符号位、指数位和尾数位如表1-5所示(前面的数字表示所对应的二进制位或二进制位范围,小括号中的数字表示所包括的二进制位数)。
表1-5单精度浮点数和双精度浮点数各部分对应的二进制位
浮点数类型 | 符号位 | 指数位 | 尾数位 |
单精度浮点数 | 31(1) | 30-23(8) | 22-0(23) |
双精度浮点数 | 63(1) | 62-52(11) | 51-0(52) |
浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。很显然,在二进制浮点数表示方法中,指数(阶码)的位数越多则数的表示范围越大,尾数的位数越多则数的精度越高。从以上分析可以看出,对于一个实数来说,可以有多种浮点数表示形式,就像一个十进制数用科学计数法表示时有多种表示方式一样。至于浮点数的运算比较复杂,在此不作介绍。
同步练习
第一章
一、填空题
1. 计算机运算中主要有______、_______、________和_______四种数据制式,分别用_____、_____、____和_____字符标识,它们的基数分别是___、___、___和___。其中对应3位二进制码的制式是___。
2. 有一个共12位的二进制,如果用下bn表示各个二进制位值的话,整个二进制数可表示为_____________,如果把它转换成十进制,则它的计算展开式为__________________。
如果要把这个12位二进制转换成十六进制,则这个十六进制数共有___位。假设现有一个从A4000H到CBFFFH的内存地址段,则这个地址段最多可以存放____字节数据。
3. 十进制整数转换成非十进制的方法是_______________________________ ,十进制小数转换成非十进制的方法是 ______________________________________。
4. 二进制的算术运算中:1+1=_____,0-1=___,借1当__,进1当__;二进制的逻辑运算中:1∧0 =____,1∨0 = ___,1 ⊕ 0 =___。
5. 在机器编码中最高位代表______,其余各位是该数的________;反码的编码规则是:正数的反码就是___________,负数的反码是将二进制位_________;补码的编码规则是:正数的补码就是_________,负数的补码是将二进制数中_______后在最低位加_____。
6. 一个有符号数为的真值为_____,原码为______,反码为_______,补码为_______(各种编码用二进制数表示)。
7. 由负数原码求其补码的方法是____________________________,由负数补码求
其原码的方法是______________________________________,正数的原码、反码和补码__________。
8.对于定点整数, 8 位原码(含 1 位符号位)可表示的最小整数为____,最大整数为____。对于定点小数, 8 位补码可表示的最小的数为_____ ,最大的数为______。
二、选择题(可多选)
1. 8个二进制位至多可表示()个数据。
A.8ﻩ B.64 ﻩ C.255 D.256
2. 对于R进制数,在每一位上的数字可以有()种。
A.R/2ﻩB.R–1 C.RﻩD.R+1
3. 假设用12个二进制位表示数据,它能表示的最大无符号整数为()。
A.2047 ﻩB.2048 C.4095 D.4096
4. 下列无符号数中最大的是()。
A.(205)DB.(0)BC.(0CD)HﻩD.()B
5. 与二进制100101.001101等值的十进制数是(),等值的十六进制数是()。
A.25.203125 B.25.34ﻩ ﻩC.37.203125 D.37.34
6. 与十进制数28.625等值的十六进制数为(),与十进制数254等值的二进制数是()。
A.112.10 ﻩB.1C.A C.1C.5 ﻩD.112.5
E.11111110 F.11101111 ﻩG.11111011 H.
7. 与十六进制数AC.E等值的十进制数是(),等值的八进制数是()
A.112.875 ﻩB.162.875 C.254.7ﻩﻩﻩD.172.875
8. 与十六进制数23.4等值的十进制数为(),0x1000转换成十进制数是() 。
A.35.5 B.23.4 ﻩC.35.75 ﻩD.35.25
E.4096ﻩF.1024 ﻩG.2048 ﻩH.8192
9. 下面的二、十、十六进制数之间整数转换正确的是()。
A.十进制数200转换为二进制无符号数是11111000B
B.十进制数122转换成十六进制数是7AH
C.十进制数439转换成8421BCD码是1
D.十六进制数F2H转换成十进制数是234
10 、对于两个机器数 55H 和 AAH ,运算结果相同的逻辑操作是()。
A. 逻辑与 B. 逻辑或 C. 逻辑非 D. 逻辑异或
11 、若 X=10111001 , Y=11110011 ,则 它们分别进行“逻辑与”和“逻辑异或”运算后的结果分别为( )。 ﻫA. 110101100 , 000001101 B. 001010011 , 111110010
C. 10110001 , 01001010 D. 01001110 , 11111011
12. 二进制整数采用机器码表示时,()的表示范围最大。
A. 原码 B. 补码 C. 反码 D. 移码
13. 在计算机加减法运算中,最常使用的是()。
A. 原码 B. 补码 C. 反码 D. ASCII码
14. 反码的作用是()。
A.作为求补码的中间手段 B. 作为求原码的中间手段
C. 能将负数转换为正数 D. 能将减法转化为加法
15. 下面关于补码的作用说法不正确的是()。
A. 使机器数的码制更简单 B. 使计算机的运算效率更高
C. 能将负数转换为正数进行运算 D. 能将减法运算转化为加法运算
16. 将 -33 以单符号位补码形式存入 8 位寄存器中,寄存器中的内容为()。
A. DFH B. A1H C. 5FH D. DEH
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论