版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1ch计算机中的数制和编码实用2计算机中的数制和编码
计算机的基本功能是进行数据和信息的处理。数据、信息以及为处理这些数据和信息而编写的程序的代码都必须输入到计算机中。由于电子器件容易实现对两种状态的表示,因此,计算机中的数字、字符和指令等一般都使用二进制编码来表示。在第2章中,将介绍无符号数的表示方法、各种数制的相互转换以及二进制数的运算规则等;将重点介绍带符号数的表示方法、补码加减法运算预计运算溢出的判断方法;最后介绍十进制数的BCD编码和字符(包括字母、数字和符号)的ASCII编码;介绍数的定点和浮点表示方法。第1页/共103页32.1
无符号数的表示及运算
2.1.1
无符号数的表示方法
1.
十进制数的表示方法
十进制计数法的特点是:①逢十进一;②使用10个数字符号(0,1,2,……,9)的不同组合来表示一个十进制数;③以后缀D或d表示十进制数(Decimal),但该后缀可以省略。第2页/共103页4任何一个十进制数可表示为:式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符(可以是09十个数字符号中的任一个)。例2.1138.5(D)=第3页/共103页5
2.
二进制数的表示方法
二进制计数法的特点是:①逢二进一;②使用2个数字符号(0,1)的不同组合来表示一个二进制数;③以后缀B或b表示二进制数(Binary)。任何一个二进制数可表示为:式中:m为小数位的位数,n为整数位的位数,Bi为第i位上的数符(0或1)。例2.21101.11B=第4页/共103页63.十六进制数的表示法
十六进制计数法的特点是:①逢十六进一;②使用16个数字符号(0,1,2,3……,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF依次表示1015;③以后缀H或h表示十六进制数(Hexadecimal)。
第5页/共103页7任何一个十六进制数可表示为:式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,…,9,A,B,C,D,E,F十六个数字符号中的任一个)。例2.30E5AD.BFH=第6页/共103页8一般来说,对于基数为的任一数可用多项式表示为:(2.1.4)式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,…,X-1共X个数字符号中任一个;Xi为第i位的权。第7页/共103页92.1.2
各种数制的相互转换
1.任意进制数转换为十进制数二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按式2.1.2,2.1.3和2.1.4各位按权展开(即该位的数值乘于该位的权)求和即可。第8页/共103页102.
十进制数转换成二进制数
1).整数部分的转换下面通过一个简单的例子对转换方法进行分析。例如,B2B3B0B2B1B0B3B1
可见,要确定13D对应的二进制数,只需从右到左分别确定系数B0,B1,B2,B3……即可。第9页/共103页11
式(2.1.5)右侧除以2:商为,余数为1,此余数即为B0;商再除以2:商为,余数为0,此余数即为B1;商再除以2:商为,余数为1,次余数即为B2;商再除以2:商为(商为0时停止),余数为1,此余数即为B3。第10页/共103页12
由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数(2)取余数,先为低位(B0)后为高位。显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数。第11页/共103页132)
小数部分的转换同样用一个简单例子说明十进制小数部分的转换方法。例如,B-1B-2B-1B-2要将一个十进制小数转换为二进制小数,实际上就是求
B-1,B-2,……给式(2.1.6)右侧乘以基数2得:(2.1.6)整数部分为B-1小数部分第12页/共103页14
整数部分为1,此即为B-1。小数部分为12-1。小数部分再乘以基数2得:整数部分为1,此即为B-2。此时小数部分已为0,停止往下计算(若不为0,继续求B-3,B-4……,直到小数部分为0或小数部分的位数满足一定精度时为止)。第13页/共103页15
由以上分析可得到十进制小数部分转换为二进制小数的方法:小数部分乘以基数(2)取整数(0或1),先为高位(B-1)后为低位。显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数。第14页/共103页16
例2.4
将13.75转换为二进制数。分别将整数和小数部分进行转换:整数部分:13=1101B
小数部分:0.75=0.11B
因此,13.75=1101.11B第15页/共103页17例2.5
将28.75转换为十六进制数整数部分:28=1CH
小数部分:,B-1=CH,小数部分已为0,停止计算。因此,28.75=1C.CH第16页/共103页18
3.二进制数与十六进制数之间的转换
因为24=16,即可用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。
将二进制数转换为十六进制数的方法:以小数点为界,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数。第17页/共103页19例2.6
1101110.01011B=0110,1110.0101,1000B=6E.58H2F.1BH=101111.00011011B
第18页/共103页202.1.3
二进制数的运算
1.
二进制数的算术运算
(1)
加: 0+0=00+1=11+0=11+1=0(进1)
(2)减: 0-0=01-1=01-0=10-1=1(借位)
(3)
乘: 00=001=010=011=1 (4)
除:二进制除法是乘法的逆运算。第19页/共103页212.
二进制数的逻辑运算(1)
“与“运算(AND).“与”运算又称逻辑乘,可用符号“”或“”表示。运算规则如下:00=001=010=011=1
可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。第20页/共103页22
(2)
“或”运算(OR)“或”运算又称逻辑加,可用符号“”或“+”表示。运算规则如下:00=001=110=111=1
可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。第21页/共103页23
(3)
“非”运算(NOT)变量的“非”运算结果用表示。逻辑“非”运算规则如下:(4)
“异或”运算(XOR)“异或”运算可用符号“”表示。运算规则如下:
可以看出,两变量只要不同,“异或”运算的结果就为“1”。第22页/共103页24例2.7A=11110101B,B=00110000B,求解第23页/共103页252.2带符号数的表示及运算
2.2.1
机器数与真值日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?在计算机中,为了区别正数和负数,通常用二进制数的最高位表示数的符号。对于一个字节型二进制数来说,D7位为符号位,D6D0位为数值位。在符号位中,规定用“0”表示正,“1”表示负,而数值位表示该数的数值大小。把一个数及其符号位在机器中的一组二进制数表示形式,称为“机器数”。机器数所表示的值称为该机器数的“真值”。第24页/共103页262.2.2
机器数的表示方法
1.原码设数x的原码记作[x]原,如机器字长为n,则原码定义如下:
在原码表示法中,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。第25页/共103页27
例如,当机器字长n=8时,
[+0]原=00000000B [-0]原=27+0(按定义计算,下同)=10000000B[+8]原=00001000B [-8]原=27+8=10001000B[+127]原=01111111B [-127]原=27+127=11111111B
当机器字长n=16时,
[+0]原=0000000000000000B [-0]原=215+0=1000000000000000B[+8]原=0000000000001000B [-8]原=215+8=1000000000001000B
[+32767]原=0111111111111111B [-32767]原=215+32767=1111111111111111B
第26页/共103页28
可以看出,原码表示数的范围是。8位二进制原码表示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;“0”的原码有两种表示法:00000000表示+0,10000000表示-0。第27页/共103页29
原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法运算;如果不同,则进行减法运算。如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致。按上述运算方法设计的算术运算电路很复杂。因此,计算机中通常使用补码进行加减运算,这样就引入了反码表示法和补码表示法。第28页/共103页302.
反码设数x的反码记作[x]反,如机器字长为n,则反码定义如下:
正数的反码与其原码相同。例如,当机器字长n=8时:
[+0]反=[+0]原=00000000B [+127]反=[+127]原=01111111B当机器字长n=16时:
[+8]反=[+8]原=0000000000001000B[+127]反=[+127]原=0000000001111111B
第29页/共103页31
负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。例如,当机器字长n=8时:
[-0]反=(28-1)-0=11111111B [-127]反=(28-1)-127=10000000B
反码表示数的范围是。8位二进制反码表示数的范围为-127+127,16位二进制反码表示数的范围为-32767+32767;“0”的反码有两种表示法:00000000表示+0,11111111表示-0。第30页/共103页323.
补码设数x的补码记作[x]补,如机器字长为n,则补码定义如下:正数的补码与其原码、反码相同。例如,当机器字长n=8时:
[+8]补=[+8]反=[+8]原=00001000B [+127]补=[+127]反=[+127]原=01111111B当机器字长n=16时:
[+8]补=[+8]反=[+8]原=0000000000001000B [+127]补=[+127]反=[+127]原=0000000001111111B第31页/共103页33
负数的补码是在原码基础上,符号位不变(仍为1),数值位按位取反,末位加1;或在反码基础上末位加1。例如,当机器字长n=8时:[-8]原=10001000B [-127]原=11111111B[-8]反=11110111B [-127]反=10000000B[-8]补=28-8=11111000B [-127]补=28-127=10000001B可以看出,补码表示数的范围是。8位二进制补码表示数的范围为-128+127,16位二进制反码表示数的范围为-32768+32767。8位二进制数的原码、反码和补码如表2.1所示。第32页/共103页34表2.18位二进制数的原码、反码和补码表00000000
二进制数
无符号十进制数带符号数原码反码补码0000000100000010
01111110011111111000000010000001
111111011111111011111111012
126127128129
253254255+0+1+2
+126+127-0-1
-125-126-127+0+1+2
+126+127-127-126
-2-1-0+0+1+2
+126+127-128-127
-3-2-1第33页/共103页352.2.3
真值与机器数之间的转换
一.原码转换为真值根据原码定义,将原码数值位各位按权展开求和,由符号位决定数的正负即可由原码求出真值。例2.8
已知[x]原=00011111B,[y]原=10011101B,求x和yx=+(026+025+124+123+122+121+120)=31y=-(026+025+124+123+122+021+120)=-29第34页/共103页36
2.
反码转换为真值要求反码的真值,只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。正数的原码是反码本身。负数的原码可在反码基础上,符号位仍为1不变,数值位按位取反。例2.9
已知[x]反=00001111B,[y]反=11100101B,求x和y解
[x]原=[x]反=00001111B,
x=+(026+025+024+123+122+121+120)=15[y]原=10011010B,
y=-(026+025+124+123+022+121+020)=-26第35页/共103页373.补码转换为真值同理,要求补码的真值,也要先求出补码对应的原码。正数的原码与补码相同。
负数的原码可在补码基础上再次求补,即:第36页/共103页38例2.10
已知[x]补=00001111B,[y]补=11100101B,求x和y解
[x]原=[x]补=00001111B,
x=+(026+025+024+123+122+121+120)=15[y]原=[[y]补]补=10011011B,
y=-(026+025+124+123+022+121+120)=-27第37页/共103页392.2.4
补码的加减运算
1.补码加法在计算机中,凡是带符号数一律用补码表示,运算结果自然也是补码。其运算特点是:符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位)。补码加法的运算规则为:即:两数补码的和等于两数和的补码。(2.2.5)第38页/共103页40
例2.11
已知
[+51]补=00110011B,[+66]补=01000010B,
[-51]补=11001101B,
[-66]补=10111110B
求
[+66]补+[+51]补=?[+66]补+[-51]补=?[-66]补+[-51]补=?解:(1)[+66]补+[+51]补
二进制(补码)加法十进制加法
01000010[+66]补
+66+)00110011[+51]补
+)+51 01110101[+117]补
+117
第39页/共103页41由于:[+66]补+[+51]补=[(+66)+(+55)]补=01110101B
结果为正,因此:[(+66)+(+55)]原=[(+66)+(+55)]补=01110101B
其真值为+117,计算结果正确。(2)[+66]补+[-51]补
二进制(补码)加法十进制加法
01000010[+66]补
+66+)11001101[−51]补
+)−5100001111[+15]补
+151自动丢失第40页/共103页42由于:[+66]补+[−51]补=[(+66)+(−55)]补=0000111B
结果为正,因此:[(+66)+(−55)]原=[(+66)+(−55)]补=00001111
其真值为+15,计算结果正确。(3)[-66]补+[-51]补
二进制(补码)加法十进制加法
10111110[-66]补
-66+)11001101[−51]补
+)−5110001011[-117]补
-1171自动丢失第41页/共103页43由于[−66]补+[−51]补=10001011B=[(−66)+(−55)]补结果为负,因此
[(−66)+(−55)]原=[[(−66)+(−55)]补]补=11110101B其真值为−117,计算结果正确。可以看出,不论被加数、加数是正数还是负数,只要直接用它们的补码直接相加,当结果不超出补码所表示的范围时,计算结果便是正确的补码形式。但当计算结果超出补码表示范围时,结果就不正确了,这种情况称为溢出。第42页/共103页442.补码减法补码减法的运算规则为:(2.2.6)第43页/共103页45
例2.12
已知
[+51]补=00110011B,[+66]补=01000010B [−51]补=11001101B,[−66]补=10111110B求
[+66]补−[+51]补=?[−66]补−
[−51]补=?解
[+66]补−[+51]补=[+66]补+[−51]补
[−66]补−[−51]补=[−66]补+[+51]补
第44页/共103页46
二进制(补码)加法十进制加法
01000010[+66]补
+66+)11001101[−51]补
-)+5100001111[+15]补
+151自动丢失
二进制(补码)加法十进制加法
10111110[-66]补
-66+)00110011[+51]补
-)-5111110001[-15]补
-15第45页/共103页47
可以看出,无论被减数、减数是正数还是负数,上述补码减法的规则都是正确的。同样,由最高位向更高位的进位会自动丢失而不影响运算结果的正确性。计算机中带符号数用补码表示时有如下优点:①可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路。第46页/共103页48②无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。例如:
无符号数带符号数
11100001 225 [−31]补+)00001101 +) 13 +)[+13]补
11101110 238[−18]补
若两操作数为无符号数时,计算结果为无符号数11101110B,其真值为238,结果正确;若两操作数为补码形式,计算结果也为补码形式,11101110B为–18的补码,结果也是正确的。第47页/共103页492.2.5溢出及其判断方法
1.进位与溢出所谓进位,是指运算结果的最高位向更高位的进位,用来判断无符号数运算结果是否超出了计算机所能表示的最大无符号数的范围。
溢出是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范围。例如,字长为n位的带符号数,它能表示的补码范围为−2n−1+2n−1−1,如果运算结果超出此范围,就叫补码溢出,简称溢出。第48页/共103页502.溢出的判断方法判断溢出的方法很多,常见的有:①通过参加运算的两个数的符号及运算结果的符号进行判断。②单符号位法。该方法通过符号位和数值部分最高位的进位状态来判断结果是否溢出。③双符号位法,又称为变形补码法。它是通过运算结果的两个符号位的状态来判断结果是否溢出。上述三种方法中,第①种方法仅适用于手工运算时对结果是否溢出的判断,第②和③两种方法在计算机中都有使用。本节仅通过具体例子对第②种方法做简要介绍。第49页/共103页51
若符号位进位状态用CF来表示,当符号位向前有进位时,CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示,当该位向前有进位时,DF=1,否则,DF=0。单符号位法就是通过该两位进位状态的异或结果来判断是否溢出的。
(2.2.7)
若OF=1,说明结果溢出;若OF=0,则结果未溢出。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否则,结果溢出。第50页/共103页52
例2.13
设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问:①若为无符号数,计算结果是否正确?②若为带符号补码数,计算结果是否溢出?解
无符号数带符号数
0100010068[+68]补+)01001000+)72+)[+72]补
10001100140[+140]补DF=1CF=0第51页/共103页53①若为无符号数,由于CF=0,说明结果未超出8位无符号数所能表达的数值范围(0255),计算结果10001100B为无符号数,其真值为140,计算结果正确。②若为带符号数补码,由于CF=1,结果溢出;这里也可通过参加运算的两个数的符号及运算结果的符号进行判断,由于两操作数均为正数,而结果却为负数,因而结果溢出;+68和+72两数补码之和应为+140的补码,而8位带符号数补码所能表达的数值范围为−128+127,结果超出该范围,因此结果是错误的。第52页/共103页54
例2.14
设有两个操作数x=11101110B,y=11001000B,将这两个操作数送运算器做加法运算,试问:①若为无符号数,计算结果是否正确?②若为带符号补码数,计算结果是否溢出?解
无符号数带符号数
11101110238[-18]补+)11001000+)200+)[-56]补
10110110438[-74]补DF=1CF=01自动丢失第53页/共103页55①若为无符号数,由于CF=1,说明结果超出8位无符号数所能表达的数值范围(0255)。两操作数11101110B和11001000B对应的无符号数分别为238和200,两数之和应为438>255,因此,计算结果是错误的。②若为带符号数补码,由于CF=0,结果未溢出。两操作数11101110B和11001000B分别为−18和−56的补码,其结果应为−74的补码形式,而计算结果10110110B正是−74的补码,因此结果正确。第54页/共103页562.3信息的编码
2.3.1二进制编码的十进制数编码(BCD编码)
虽然二进制数对计算机来说是最佳的数制,但是人们却不习惯使用它。为了解决这一矛盾,人们提出了一个比较适合于十进制系统的二进制编码的特殊形式,即将1位十进制的09这10个数字分别用4位二进制码的组合来表示,在此基础上可按位对任意十进制数进行编码。这就是二进制编码的十进制数,简称BCD码(Binary-CodedDecimal)。第55页/共103页574位二进制数码有16种组合(00001111),原则上可任选其中的10个来分别代表十进制中09这10个数字。但为了便于记忆,最常用的是8421BCD码,这种编码从00001111这16种组合中选择前10个即00001001来分别代表十进制数码09,8、4、2、1分别是这种编码从高位到低位每位的权值。BCD码有两种形式,即压缩型BCD码和非压缩型BCD码。第56页/共103页581.压缩型BCD码压缩型BCD码用一个字节表示两位十进制数。例如,10000110B表示十进制数86。
2.非压缩型BCD码非压缩型BCD码用一个字节表示一位十进制数。高4位总是0000,低4位用00001001中的一种组合来表示09中的某一个十进制数。第57页/共103页59表2.28421BCD码部分编码表十进制数压缩型BCD码非压缩型BCD码12391011192021000000010000001000000011000010010001000000010001000110010010000000100001000000010000001000000011
0000100100000001000000000000000100000001
000000010000100100000010000000000000001000000001第58页/共103页60
需要说明的是,虽然BCD码可以简化人机联系,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需要的位数比用纯二进制码多,而且用BCD码进行运算所花的时间也要更多,计算过程更复杂,因为BCD码是将每个十进制数用一组4位二进制数来表示,若将这种BCD码送计算机进行运算,由于计算机总是将数当作二进制数来运算,所以结果可能出错,因此需要对计算结果进行必要的修正,才能使结果为正确的BCD码形式。详见本小节例2.17。第59页/共103页61例2.15
十进制数与BCD数相互转换。①将十进制数69.81转换为压缩型BCD数:
69.81=(01101001.10000001)BCD②将BCD数10001001.01101001转换为十进制数:
(10001001.01101001)BCD=89.69第60页/共103页62
例2.16
设有变量x等于10010110B,当该变量分别为无符号数、原码、补码、压缩型BCD码时,试分别计算变量x所代表的数值大小。解无符号数:x=10010110B=127+026+025+124+023+122+121+020=150原码: [x]原=10010110B
x=−026+025+124+023+122+121+020=−22补码: [x]补=10010110B [x]原=[[x]补]补=11101010B
x=−126+125+024+123+022+121+020=−106BCD码: [x]BCD=10010110B
x=96第61页/共103页63
例2.17(BCD码运算时的修正问题)用BCD码求38+49。解0011100038的BCD码+)0100100149的BCD码
1000000181的BCD码
计算结果10000001是81的BCD数,而正确结果应为87的BCD数10000111,因此结果是错误的。其原因是,十进制数相加应该是“逢十进一”,而计算机按二进制数运算,每4位为一组,低4位向高4位进位与十六进制数低位向高位进位的情况相当,是“逢十六进一”,所以当相加结果超过9时将比正确结果少6,因此结果出错。解决办法是对二进制加法运算结果采用“加6修正”,从而将二进制加法运算的结果修正为BCD码加法运算结果。BCD数相加时,对二进制加法运算结果修正的规则如下:第62页/共103页64①如果两个对应位BCD数相加的结果向高位无进位,且结果小于或等于9,则该位不需要修正;若得到的结果大于9而小于16,则该位需要加6修正。②如果两个对应位BCD数相加的结果向高位有进位(结果大于或等于16),则该位需要进行加6修正。因此,两个BCD数进行运算时,首先按二进制数进行运算,然后必须用相应的调整指令进行调整,从而得到正确的BCD码结果。有关BCD运算结果的调整指令将在第4章 “80x86指令系统”中介绍。第63页/共103页652.3.2ASCII字符编码所谓字符,是指数字、字母以及其他一些符号的总称。现代计算机不仅用于处理数值领域的问题,而且要处理大量的非数值领域的问题。这样一来,必然需要计算机能对数字、字母、文字以及其他一些符号进行识别和处理,而计算机只能处理二进制数,因此,通过输入/输出设备进行人机交换信息时使用的各种字符也必须按某种规则,用二进制数码0和1来编码,计算机才能进行识别与处理。第64页/共103页66
目前,国际上使用的字符编码系统有许多种。在微机、通信设备和仪器仪表中广泛使用的是ASCII码(AmericanStandardCodeforInformationInterchange)——美国标准信息交换码。ASCII码用一个字节来表示一个字符,采用7位二进制代码来对字符进行编码,最高位一般用做校验位。7位ASCII码能表示27=128种不同的字符,其中包括数码(09),英文大、小写字母,标点符号及控制字符等,见表2.3。该表的使用方法读者应熟练掌握。如数字“1”的ASCII码值为31H,字母“A”的ASCII码值为41H,符号“?”的ASCII码值为3FH等。第65页/共103页67表2.3美国标准信息交换码ASCII(7位代码)第66页/共103页682.4数的定点与浮点表示法2.4.1定点表示所谓定点表示法,是指小数点在数中的位置是固定的。原理上讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示成纯小数或纯整数形式,如图2.1所示。图2.1定点数的两种表示方法(a)纯小数形式;(b)纯整数形式第67页/共103页69
设用一个n+1位字来表示一个数x,其中一位表示符号位(0表示正,1表示负),其他n位为数值位。对于纯小数表示法,所能表示的数x(原码表示,下同)的范围为:−(1−2−n)≤x≤1−2−n
(2.4.1)
它能表示的数的最大绝对值为1−2−n,最小绝对值为2−n。对于纯整数表示法,所能表示的数x的范围为:−(2−n−1)≤x≤2−n
−1(2.4.2)它能表示的数的最大绝对值为2n−1,最小绝对值为1。第68页/共103页70定点表示法存在的问题:因为实际工作中很少遇到数据都是纯小数或纯整数的情况,所以定点表示法要求程序员做的一件重要工作是为要计算的问题选择“比例因子”。所有原始数据都要用比例因子化成纯小数或纯整数形式,计算结果又要用比例因子恢复实际值。这一过程不仅占用资源,有时为了选择适当的比例因子以免结果溢出,需要反复多次调整比例因子,而且比例因子也需要占用一定的存储空间。第69页/共103页712.4.2浮点表示所谓浮点表示法,就是小数点在数中的位置是浮动的。任意一个二进制数x总可以写成如下形式:
(2.4.3)其中,d称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称为数符,表示数的符号,用尾数前的一位表示,该位为0,表明该浮点数为正,该位为1,表明该浮点数为负;p称为阶码,它前面的符号称为阶符,用阶码前一位表示,阶码为正时,用0表示,阶码为负时,用1表示。浮点数的编码格式如图所示。第70页/共103页72
可以看出,将尾数d的小数点向右(阶码p为正时)或向左(阶码p为负时)移动p位,即可得到该浮点数表示的数值x。阶码p指明小数点的位置,小数点随着阶码的大小和正负而浮动,因此把这种数称为浮点数。设阶码的位数为m位,尾数的位数为n位,则该浮点数表示的数值范围为:(2.4.4)
在字长相同的情况下,浮点数能表示的数值范围比定点数大得多,且精度高,但浮点运算规则复杂。第71页/共103页73例.1100.11的浮点数表示是0.110011×24
解:尾数为110011,数符为0;阶码为3bit(100),阶符为0。小数点每左移1位,则阶码p加1;小数点每右移1位,则阶码p减1。例:设浮点数的阶码部分3bit,其中阶码为2bit,阶符为1bit;尾数部分为5bit,其中尾符为1bit,尾数为4bit。若此数表示为-23×13D,其二进制表示为211×(-1101),则在计算机中相应的表示形式如下:
01111101第72页/共103页74小结一、进位计数制及其表示方法(一)、进位计数制及其要素:
进位计数制:按进位原则进行计数的方法。例:十进制数有: 0、1、2、3、4、5、6、7、8、9十种状态。我们说:十进制数基数10,变化范围0~(10-1),
逢十进一。看一个十进制数:
4094 每一位十种数码的状态(0~9)
千百十个 本位绝对值的大小=数×位权
103102101100如:千位=4×103=4000第73页/共103页75十进制数有二个要素:
1.基数:十 每一位0、1、2、3、4、5、6、7、8、10-1
(逢十进一)。
2.位权:10i
某一位数绝对值大小=数×位权.
二个要素:适用于二、八、十六进制。
二进制数:基数2位权2i
八进制数:基数8位权8i
十六进制数:基数16位权16i第74页/共103页76(二)、进位计数制的表示方法:
1234.56=1103+2102+3101+4100+510-1+610-2推广到一般形式(任意十进制):
N=±[kn
10n+kn-1
10n-1+……+k0
100
+k-1
10-1+……+k-m
10-m] =±[ki
10i] (i=-m~n)任何某一位数大小=ki
10i对于任意进制:N=±[kiRi] (i=-m~n) R—基数,逢R进一.Ri—位权第75页/共103页77例如:二进制数B=10011101 B=127+124+123+122+120=(157)10
在计算机里进行运算和处理均是按二进制数处理的。而二进制数写起来麻烦;书写时又以八进制或十六进制表示;日常生活中又常用十进制,因此就有:二
十 八
十 二
八数制之间转换问题 十六
十 二 十六第76页/共103页78二、 数制之间的转换:(一)、十二整数十→二(除2取余法,降幂法)(1)除2取余法(217)10=kn
2n+kn-1
2n-1+……k1
21+k0
20 =2(kn
2n-1+kn-1
2n-2+……+k1
20)+k02(kn
2n-1+kn-1
2n-2+……+k1
20)是2的倍数k0
是余数.第77页/共103页79(217)10÷2----得到余数k0
/2
整数商
余数:按照相反的方向写下来。
/2/2/2/2/2/2/2/2217
1085427136310----商
10011011--余数(217) 10=(11011001)2书写方向第78页/共103页80结论:整数除2取余,直到商为0为止, 读数由后向前。适用于数值比较小的情况。(2)降幂法:计算(217)10=(11011001)2权值:
2102928272625242322212010245122561286432168421 217-27=89 a7=1
,9-23=1
a3=189-26=25 a6=1
,a2=0
a5=0
,a1=0 25-24=9 a4=1
,1-20=0a0=1第79页/共103页81小数十→二:乘2取整方法:对十进制数逐次乘2, 小数点前边系数为系数ki。
即乘2取整法,位数取决于要求精度。如:
(0.613)10
2=1.226k-1=1(0.226)10
2=0.452k-2=0(0.452)10
2=0.904k-3=0(0.904)10
2=1.808k-4=1(0.1001)2=(0.5625)10(0.808)10
2=1.616k-5=1(0.10011)2=(0.609375)10(0.616)10
2=1.232k-6=1(0.613)10=(0.1001)2k-7=0第80页/共103页823. 二→十同样可以用公式进行(0.1001)2=12-1+12-4=0.5+0.0625=(0.5625)10(0.10011)2=12-1+12-4+12-5+12-6
=(0.609375)10看一下常用的几种数制写法:八位二进制数第81页/共103页83
十进制二进制八进制十六进制BCD 00 0 0 0 1 1 1 1 1 2 10 2 2 10 3 11 3 3 11 4 100 4 4 100 5 101 5 5 101 6 110 6 6 110 7 111 7 7 111 8 100010
8 1000 9 1001 11 9 1001
10 1010 12 A
10000 11 1011 13 B 10001 12 110014 C 10010 13 1101 15 D 10011 14 1110 16 E 10100 15 1111 17 F 10101 16 10000 20 10 10110 . . . 11 . . . . 12 . . . . . .(255)D 11111111B 377Q FFH (10,0101,0101)BCD第82页/共103页84(二)、 二八,二十六,二
BCD之间转换
1、 二八二→
八:
以小数点为界向左向右三位一段,不够补0,
三位二进制数用一位八进制数表示。例:(1,101,001.010,011,1)2
不够补0
不够补0
(001101001.010011
100)2=(151.234)8八→二:
一位八进制数用三位二进制数表示.
(151.234)8=(001101001.010011100)2第83页/共103页852、二十六:
二→十六: 以小数点为界向左向右四位一段,不够补0,
四位二进制数用一位十六进制数表示。例:(1101001.0100111)2→(69.4E)16 不够补0
不够补0 (0110,1001.0100,1110)2=(69.4E)16
十六→二:一位十六进制数用四位二进制数表示。例:(69.4E)16
=
(0110,1001.0100,1110)2第84页/共103页863、 二
BCD BCD数:常用8421码,每一位十进制数用四位二进制编码表示。
1111B 9D 1001BCD 10D00010000BCD
BCD码与二进制数之间转换没有直接关系, 必须先转换成十进制,然后转换成二进制。例:1111111B=255D=0010,0101,0101BCD 0010,0101,0101BCD=255D=11111111B第85页/共103页87三.字和各种字符的编码(ASCⅡ编码)字和各种字符按照特定规则用二进制编码在机器中表示。编码有各种方式:目前规定在微型机中最普遍采用ASCⅡ码(AmericanStandardCodeforInformationInterchange) 美国标准信息交换码。参看P15ASCⅡ码表。(一)二进制数的运算
(二)带符号数的表示第86页/共103页88ASCⅡ码:
采用七位二进制编码,可以表示128个字符。
bit7作奇偶校验位,在机器中表示时,常认为“0”,用一个字节(8位)表示一个ASCⅡ字符。常用的ASCⅡ字符:
0—9 的ASCⅡ码30H—39H A—Z的ASCⅡ码41H—5AH a—z的ASCⅡ码61H—7AH第87页/共103页89(一)二进制数的运算(自学P3-P7)(二)带符号数的表示
1.机器数与真值
2.原码
3.反码
4.补码第88页/共103页90上面提到的是一种无符号数,机器数中会有正有负。符号怎么表示呢?通常数的最高位为符号位,对于字长8位机器数:
D7为符号位:0表示“+”,1表示“—”。符号数码化了。
D6~D0为数字位。如:X=(01011011)2=+91X=(11011011)2=-91
连同符号位在一起作为一个数称为机器数, 机器数的数值称为真值。如:N1=+1011011N2=-1011011为真值
01011011 11011011为机器数第89页/共103页91符号数码化了,对数据进行运算时,符号位应如何处理? 把符号位和数值位一起编码:原码,反码,补码。
2.原码: 正数符号位用“0”表示,负数符号用“1”表示, 这种表示法称为原码。
X=+105[X]原=01101001 X=-105[X]原=11101001
符号数值 原码表示简单,真值转换方便,减法不方便。 引进反码,补码。第90页/共103页923.反码:
正数反码表示与原码相同,
(最高位“0”表示正,其余位为数值位。)
负数的反码表示为负数原码的符号位不变尾数按位取反。例: [+4]反
=0 0000100 [-4]反
=1 1111011 [+127]反=0 1111111 [-127]反=10000000 [+0]反
=00000000 [-0]反
=11111111第91页/共103页934.补码:
正数的补码表示与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东国企安置考试试题及答案
- 船员教育和培训质量-体系的建立与实施
- 跨境电算协同中算力负载跨国绿电消纳与虚拟电厂耦合-基于国际虚拟电厂标准与算力负载绿电虚拟电厂调度协议规范分析
- 跨境电算协同中算力负载跨国绿电插值与电网阻塞管理-基于国际电网运营商协会算力绿电插值与阻塞耦合管理指南规范分析
- 临床项目禁忌症总览2026
- 四川省考题目和答案
- 西藏日喀则地区岗巴县2027届三年级数学第一学期期末监测试题含解析
- 2027届甘肃省张掖市某校六年级数学第一学期期末检测模拟试题含解析
- 山西省运城市夏县2027届数学三上期末学业质量监测试题含解析
- 成本实操-殡葬礼仪公司成本核算SOP
- 2025年乌鲁木齐市法院系统招聘聘用制书记员笔试真题
- 《无人机应用技术概论》单元5 无人机低空交通法规与管理体系
- 2026年湖南长沙市社区工作者考试真题及答案
- 银行网点装修工程施工组织设计
- 2026年党员引领生态环境保护制度建设方案
- 2026年医疗护理员职业技能竞赛重点培训试题及答案
- 新能源汽车电气系统检修-配套课件
- Unit 1 Discovering Useful Structures教学设计-2023-2024学年高中英语人教版(2019)必修第三册
- 气象行业职业技能竞赛(公共气象服务)考试题库大全-下(多选、判断题)
- 苏教版四年级上册数学第四单元《统计表和条形统计图(一)》测试卷(含答案解析)
- 教学能力比赛学情分析图(源图可编辑)
评论
0/150
提交评论