|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
数制基础
常用二进制(B/b结尾)、十进制(D/d结尾)、十六进制(H/h结尾)。
数据组织
位
计算机中最小的单位,一个二进制位。
字节
字节是80806/8088CPU可寻址的最小数据单位,一个字节是8位。一个字节中位的编号从右到左依次是0-7。
字
通常,一个16位,一个字中的编号从右到左依次是0-15。
第0位叫做最低有效位,第15位叫做最高有效位。0-7叫做低位字节,8-15叫做高位字节。
双字
通常,一个32位。一个双字中的编号从右到左依次是0-31.
第0位叫做最低有效位,第31位叫做最高有效位。0-7叫做低字,8-15叫做高字。
数的编码
我们把计算机中表示的二进制数据代码成为机器数,它约定了数据的符号和数据的格式。而机器数代表的实际数值称为真值。
机器数的编码可分为定点数和浮点数两种。定点数又可分为定点整数和定点小数两种。
定点小数表示的是纯小数。在定点小数的机器数编码格式中,规定小数点的位置固定在最高数据位之前,符号位之后,小数点的位置在整个运算过程中是固定不变的。在定点机器中,小数点的位置一经约定,即固定不变,不需要专门的代码指定小数点的位置。
对于一个n+1位的定点二进制小数x=x0x1.....xn其中x0表示符号位,为0则x为正,为1则x为负。
x所能表示的范围-(1-2^(-n))<=x<=(1-2^(-n))
定点整数的机器数编码方法中,规定小数点固定放在最低数据位的右边。对于一个n+1位的定点二进制整数x=x0x1.....xn其中xn表示符号位,为0则x为正,为1则x为负。
x所能表示的范围-(2^n-1)<=x<=-2^n-1
定点小数编码
原码表示法
原码用最高位表示数的符号位,又叫符号-绝对值表示法。
IF x>0 then
x = +0.x1x2....xn
[x]原 = 0.x1x2......xn = x
IF x<0 then
x = -0.x1x2.....xn
[x]原 = 1.x1x2......xn
[x]原 = 1+0.x1x2......xn
[x]原 = 1-(-0.x1x2.....xn)
= 1 - x
IF x=0 then
[+0]原 = 0.00......0
[-0]原 = 1.00......0
x 当0<=x<1
[x]原 = {
1-x 当-1<x<=0
原码表示法简单、直观与真值转换方便。缺点是加减运算不方便。
定点小数表示
补码表示法
一般说:任意一个数x的补码,等于该数加上其模数。模数m为一个正整数,则
[x]补 = m+x (mod m)
IF x>0 then
[x]补 = x + m = x (mod m)
IF x<0 then
[x]补 = x + m = m - |x| (mod m)
IF x=0 then
[+0]补 = [-0]补 = 0.0000
对任意一个n+1位的二进制小数x=x0x1......xn期中x0为符号位,其补码为
x 当0<=x<=1-2^(-n)
[x]补 = {
2-x 当-1<=x<=0 (mod 2)
关于定点二进制小数补码模数m=2的说明:
[x]补max = 0.1111111...111
补码具有以下性质
1.[+0]补 = [-0]补 = 0.0000
2.定点小数的补码中,可表示-1,这是其他编码中做不到的
3.负数的补码求法中,用2减去x的绝对值,可以看做是用1111减去x的绝对值,然后末位加1。因而负数求补码的方法,可用x逐位求反,末位加1得到。
4.关于补码的符号位:
x>=0, [x]补=x>=0,此时x0=0
x<=0, [x]补=2+x>=1,此时x0=1
5.已知[x]补=x0x1...........xn,求x的真值
根据补码的定义,可综合写成[x]补=2x0+x,期中x0为符号位,x为该数的真值,对于正负数均成立。
x = [x]补 - 2x0
= x0.x1x2.........xn-2x0
=-x0+0.x1x2.........xn
=-(x0-0.x1x2........xn)
6.补码的符号扩展及右移规则
已知[x]补=x0.x1x2.......xn,求[x/2]补
由性质5可知:
x = -x0 + 0.x1x2.....xn
= -x0 + x1*2^(-1) + x2*2^(-2)......xn*2^(-n)
x/2 = -x0*2^(-1) + x1*2^(-2)...............xn*2^(-n-1)
= -x0+x0*2^(-1) + x1*2^(-2)...............xn*2^(-n-1)
= -x0 + 0.x0x1x2...........xn
[x/2]补 = 2x0 + x/2 = x0.x0x1x2....xn
反码
反码与补码类似,正数的反码是其本身;负数的反码,只需每位求反即可。
x 当0<=x<1
[x]反 = {
(2-2^(-n))+x 当-1<x<=0
可以把反码看做以(2-2^(-n))为模的补码。因此在反码的运算中当最高位产生进位2时,不能随便扔掉,还必须在最低位加1(2^(-n))才可。
另外反码表示中
[+0]反 = 0.0000.......0
[-0]反 = 1.1111.......1
零的表示不唯一这也是反码的不便之处,但常常用反码作为补码的跳板。
定点整数编码
x = xnxn-1..........x0
xn为符号位
原码
设x=xnxn-1..........x0
x 当0<=x<=2^n-1
[x]原 = {
2^n-x 当-(2^n-1)<=x<=0
[+0]原 = 000000000.....0
[-0]原 = 100000000.....0
补码
x 当 0<=x<=2^n-1
[x]补 = {
2^(N+1)+x 当-2^n<=x<=0 (mod 2^(n+1))
各种性质和定点小数补码性质类似。
[+0]补 = [-0]补 = 00000.........000
10000......0 的真值为 -2^n
反码
x 当 0<=x<=2^n-1
[x]反 = {
(2^(n+1)-1) + x 当 -(2^n-1)<x<=0
移码
[x]移 = 2^n + x,-2^n<=x<=2^n-1
当x为正数时只要将最高位(符号位)加1即可
当x为负数时 [x]移 = 2^n - |x|
例:求x = (±6)D = (±110)B的移码
[(+110)B]移 = 2^3+0110 = 1110
[(-110)B]移 = 2^3-110 = 0010
移码的特点是比较数的大小方便。
浮点数编码
浮点数表示
一部分表示数的有效值,称为尾数M(mantissa),一部分表示该数小数点的位置,称为阶码E(exponent)。
一般计算机中规定阶码E为定点整数,尾数M为定点小数。阶码在浮点运算中只作加减运算,通常采用补码或移码表示。尾数要做加减运算和乘除运算,通常采用补码和原码表示。
浮点数中阶码和尾数的关系,用下式表示
x = MxREx
其中x是一个浮点数,Mx是其尾数,用定点二进制小数表示;Ex是其阶码,用定点二进制整数表示;R是阶的低,可以用2、8或16,通常取2,阶的底与尾数Mx的进位制的基数相同。若阶的底R=2,则Mx为二进制数。一个机器中所有的浮点数阶的底都相同,因此R不表现出来。
规格化数
在浮点数的表示中,一个浮点数可以有多种表示方式,所以提出了规格化的概念。规定尾数最高位数据位不为零,为有效数据。这样要求|Mx|>=R-1。当R=2时,| Mx |>=0.5对于用源码表示的尾数,要求尾数的最高位为1;对于补码表示的尾数,要求数据最高位与尾数符号不同,即Mx = 0.1x…….x.,或Mx=1.0x……..x。
机器零
当一个浮点数,其尾数Mx = 0 不管阶码取何值,都把该浮点数看做零,或者阶码小于其阶码最小值,叫做机器零。此时要求把浮点数的阶码和尾数都清零。
浮点数溢出
当一个数的阶码大于机器数的最大阶码时,称为上溢;转溢出处理。当下溢时,视为机器零。
IEEE浮点数格式
IEEE标准规定浮点数的字长有3种:32位短实数,64位长实数和80位临时实数。因为尾数已经采用规格化方法表示,其最高位一定是有效数据位,因此可节省1位,这样表示的尾数有效位数可以再增加1位。规格户尾数最高数据位称隐藏位。 |
评分
-
查看全部评分
|