第第2 2章章 计算机中的数制和编码计算机中的数制和编码教学内容:教学内容:1. 1. 进位计数制及其表示方法进位计数制及其表示方法2. 2. 数制之间的数制之间的转换转换3. 3. 字和各种字符的字和各种字符的编码编码 1ch2计算机中的数制和编码课件第第2 2章章 计算机中的数制和编码计算机中的数制和编码 2.1 无符号数的表示和运算无符号数的表示和运算 2.2 带符号数的表示和运算带符号数的表示和运算 2.3 信息的编码信息的编码 2.4 数的定点与浮点表示法数的定点与浮点表示法 2ch2计算机中的数制和编码课件计算机中的数制和编码计算机中的数制和编码 计算机的基本功能是进行数据和信息的处理数据、信息以及为处理这些数据和信息而编写的程序的代码都必须输入到计算机中由于电子器件容易实现对两种状态的表示,因此,计算机中的数字、字符和指令等一般都使用二进制编码来表示 在第2章中,将介绍无符号数的表示方法、各种数制的相互转换以及二进制数的运算规则等;将重点介绍带符号数的表示方法、补码加减法运算预计运算溢出的判断方法;最后介绍十进制数的BCD编码和字符(包括字母、数字和符号)的ASCII编码;介绍数的定点和浮点表示方法。
3ch2计算机中的数制和编码课件2.1 无符号数的表示及运算 2.1.1 无符号数的表示方法 1. 十进制数的表示方法 十进制计数法的特点是: ① 逢十进一; ② 使用10个数字符号(0,1,2,……,9)的不同组合来表示一个十进制数; ③ 以后缀D或d表示十进制数(Decimal),但该后缀可以省略 4ch2计算机中的数制和编码课件任何一个十进制数可表示为: 式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符(可以是09十个数字符号中的任一个) 例例2.1 138.5(D)= 5ch2计算机中的数制和编码课件 2. 二进制数的表示方法 二进制计数法的特点是: ① 逢二进一; ② 使用2个数字符号(0,1)的不同组合来表示一个二进制数; ③ 以后缀B或b表示二进制数(Binary) 任何一个二进制数可表示为: 式中:m为小数位的位数,n为整数位的位数,Bi为第i位上的数符(0或1) 例例2.2 1101.11B= 6ch2计算机中的数制和编码课件 3. 十六进制数的表示法十六进制数的表示法 十六进制计数法的特点是: ① 逢十六进一; ② 使用16个数字符号(0,1,2,3……,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF 依次表示1015; ③ 以后缀H或h表示十六进制数(Hexadecimal)。
7ch2计算机中的数制和编码课件任何一个十六进制数可表示为: 式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,…,9,A,B,C,D,E,F十六个数字符号中的任一个) 例例2.3 0E5AD.BFH =8ch2计算机中的数制和编码课件一般来说,对于基数为的任一数可用多项式表示为: (2.1.4) 式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,…,X-1共X个数字符号中任一个;Xi为第i位的权 9ch2计算机中的数制和编码课件2.1.2 各种数制的相互转换 1..任意进制数转换为十进制数 二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按式2.1.2,2.1.3和2.1.4各位按权展开(即该位的数值乘于该位的权)求和即可 10ch2计算机中的数制和编码课件 2. 十进制数转换成二进制数 1).整数部分的转换下面通过一个简单的例子对转换方法进行分析例如, B2B3B0B2B1B0B3B1 可见,要确定13D对应的二进制数,只需从右到左分别确定系数 B0,B1,B2,B3……即可。
11ch2计算机中的数制和编码课件 式(2.1.5)右侧除以2: 商为 ,余数为1,此余数即为B0; 商再除以2: 商为 ,余数为0,此余数即为B1; 商再除以2: 商为 ,余数为1,次余数即为B2; 商再除以2: 商为(商为0时停止) ,余数为1,此余数即为 B3 12ch2计算机中的数制和编码课件 由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数(2)取余数,先为低位(B0)后为高位 显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数 13ch2计算机中的数制和编码课件2) 小数部分的转换同样用一个简单例子说明十进制小数部分的转换方法例如, B-1B-2B-1B-2要将一个十进制小数转换为二进制小数,实际上就是求 B-1,B-2,……给式(2.1.6)右侧乘以基数2得: (2.1.6)整数部分为B-1小数部分14ch2计算机中的数制和编码课件 整数部分为1,此即为B-1。
小数部分为12-1 小数部分再乘以基数2得:整数部分为1,此即为B-2 此时小数部分已为0,停止往下计算(若不为0,继续求B-3,B-4……,直到小数部分为0或小数部分的位数满足一定精度时为止) 15ch2计算机中的数制和编码课件 由以上分析可得到十进制小数部分转换为二进制小数的方法: 小数部分乘以基数(2)取整数(0或1),先为高位(B-1)后为低位 显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数 16ch2计算机中的数制和编码课件 例例2.4 将13.75转换为二进制数 分别将整数和小数部分进行转换: 整数部分:13=1101B 小数部分:0.75=0.11B 因此,13.75=1101.11B 17ch2计算机中的数制和编码课件例例2.5 将28.75转换为十六进制数 整数部分:28=1CH 小数部分:,B-1=CH,小数部分已为0,停止计算 因此,28.75=1C.CH 18ch2计算机中的数制和编码课件 3..二进制数与十六进制数之间的转换 因为24=16,即可用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。
将将二二进进制制数数转转换换为为十十六六进进制制数数的的方方法法:以小数点为界,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0然后分别用一个16进制数表示每一组中的4位二进制数 将十六进制数转换为二进制数的方法:将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数 19ch2计算机中的数制和编码课件例例2.6 1101110.01011B=0110,1110.0101,1000B=6E.58H 2F.1BH=10 1111.0001 1011B 20ch2计算机中的数制和编码课件2.1.3 二进制数的运算 1. 二进制数的算术运算 (1) 加: 0+0=0 0+1=1 1+0=1 1+1=0(进1) (2) 减: 0-0=0 1-1=0 1-0=1 0-1=1(借位) (3) 乘: 00=0 01=0 10=0 11=1 (4) 除: 二进制除法是乘法的逆运算。
21ch2计算机中的数制和编码课件 2. 二进制数的逻辑运算 (1) “与“运算(AND). “与”运算又称逻辑乘,可用符号“”或“”表示运算规则如下:00=0 01=0 10=0 11=1 可以看出,只有当两个变量均为“1”时,“与”的结果才为“1” 22ch2计算机中的数制和编码课件 (2) “或”运算(OR) “或”运算又称逻辑加,可用符号“”或“+”表示运算规则如下:00=0 01=1 10=1 11=1 可以看出,两个变量只要有一个为“1”,“或”的结果就为“1” 23ch2计算机中的数制和编码课件 (3) “非”运算(NOT) 变量的“非”运算结果用表示逻辑“非”运算规则如下: (4) “异或”运算(XOR) “异或”运算可用符号“”表示运算规则如下: 可以看出,两变量只要不同,“异或”运算的结果就为“1”。
24ch2计算机中的数制和编码课件例例 2.7 A=11110101B, B=00110000B,求 解解25ch2计算机中的数制和编码课件2.2 带符号数的表示及运算带符号数的表示及运算 2.2.1 机器数与真值 日常生活中遇到的数,除了上述无符号数外,还有带符号数对于带符号的二进制数,其正负符号如何表示呢?在计算机中,为了区别正数和负数,通常用二进制数的最高位表示数的符号对于一个字节型二进制数来说,D7位为符号位,D6D0位为数值位在符号位中,规定用“0”表示正,“1”表示负,而数值位表示该数的数值大小 把一个数及其符号位在机器中的一组二进制数表示形式,称为“机器数”机器数所表示的值称为该机器数的“真值” 26ch2计算机中的数制和编码课件2.2.2 机器数的表示方法 1. 原码设数x的原码记作[x]原,如机器字长为n,则原码定义如下: 在原码表示法中,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值 27ch2计算机中的数制和编码课件 例如,当机器字长n=8时, [+0]原=00000000B [-0]原=27+0(按定义计算,下同)=10000000B [+8]原=00001000B[-8]原=27+8=10001000B [+127]原=01111111B[-127]原=27+127=11111111B 当机器字长n=16时, [+0]原=00000B[-0]原=215+0=10000B [+8]原=01000B[-8]原=215+8=11000B [+32767]原=11111B[-32767]原=215+32767=1111111111111111B 28ch2计算机中的数制和编码课件 可以看出,原码表示数的范围是。
8位二进制原码表示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;“0”的原码有两种表示法:00000000表示+0,10000000表示-0 29ch2计算机中的数制和编码课件 原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算• 如进行两数相加,必须先判断两个数的符号是否相同 如果相同,则进行加法运算; 如果不同,则进行减法运算• 如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致 按上述运算方法设计的算术运算电路很复杂因此,计算机中通常使用补码进行加减运算,这样就引入了反码表示法和补码表示法 30ch2计算机中的数制和编码课件2. 反码设数x的反码记作[x]反,如机器字长为n,则反码定义如下: 正数的反码与其原码相同例如,当机器字长n=8时: [+0]反=[+0]原=00000000B [+127]反=[+127]原=01111111B当机器字长n=16时: [+8]反=[+8]原=01000B [+127]反=[+127]原=11111B 31ch2计算机中的数制和编码课件 负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。
例如,当机器字长n=8时: [-0]反=(28-1)-0=11111111B [-127]反=(28-1)-127=10000000B 反码表示数的范围是8位二进制反码表示数的范围为-127+127,16位二进制反码表示数的范围为-32767+32767;“0”的反码有两种表示法:00000000表示+0,11111111表示-0 32ch2计算机中的数制和编码课件3. 补码设数x的补码记作[x]补,如机器字长为n,则补码定义如下: 正数的补码与其原码、反码相同例如,当机器字长n=8时:[+8]补=[+8]反=[+8]原=00001000B[+127]补=[+127]反=[+127]原=01111111B当机器字长n=16时:[+8]补=[+8]反=[+8]原=01000B[+127]补=[+127]反=[+127]原=11111B 33ch2计算机中的数制和编码课件 负数的补码是在原码基础上,符号位不变(仍为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+327678位二进制数的原码、反码和补码如表2.1所示 34ch2计算机中的数制和编码课件表表2.1 8位二进制数的原码、反码和补码表位二进制数的原码、反码和补码表 0000 0000 二进制数 无符号十进制数带 符 号 数原码反码补码0000 00010000 0010 0111 11100111 11111000 00001000 0001 1111 11011111 11101111 1111012 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-135ch2计算机中的数制和编码课件2.2.3 真值与机器数之间的转换 一.原码转换为真值 根据原码定义,将原码数值位各位按权展开求和,由符号位决定数的正负即可由原码求出真值 例例2.8 已知[x]原=00011111B,[y]原=10011101B,求x和y x = + (026+025+124+123+122+121+120)=31 y = - (026+025+124+123+122+021+120)=-29 36ch2计算机中的数制和编码课件 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 37ch2计算机中的数制和编码课件3. 补码转换为真值同理,要求补码的真值,也要先求出补码对应的原码• 正数的原码与补码相同• 负数的原码可在补码基础上再次求补,即:38ch2计算机中的数制和编码课件例例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 39ch2计算机中的数制和编码课件2.2.4 补码的加减运算 1. 补码加法 在计算机中,凡是带符号数一律用补码表示,运算结果自然也是补码。
其运算特点是:符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位) 补码加法的运算规则为:即:两数补码的和等于两数和的补码 (2.2.5) 40ch2计算机中的数制和编码课件 例例2.11 已知 [+51]补=0011 0011B,[+66]补=0100 0010B, [-51]补=1100 1101B, [-66]补=1011 1110B 求求 [+66]补+[+51]补=?[+66]补+[-51]补=?[-66]补+[-51]补=? 解:(1) [+66]补+[+51]补 二进制(补码)加法 十进制加法 0100 0010 [+ 66]补 + 66+) 0011 0011 [+ 51]补 +) + 51 0111 0101 [+117]补 +117 41ch2计算机中的数制和编码课件由于:[+66]补+[+51]补=[(+66)+(+55)]补=01110101B 结果为正,因此:[(+66)+(+55)]原=[(+66)+(+55)]补=01110101B 其真值为+117,计算结果正确。
2) [+66]补+[-51]补 二进制(补码)加法 十进制加法 0100 0010 [+ 66]补 +66+) 1100 1101 [−51]补 +) −51 0000 1111 [+15]补 +151自动丢失42ch2计算机中的数制和编码课件由于:[+66]补+[−51]补=[(+66)+(−55)]补=0000111B 结果为正,因此:[(+66)+(−55)]原=[(+66)+(−55)]补=00001111 其真值为+15,计算结果正确 (3) [-66]补+[-51]补 二进制(补码)加法 十进制加法 1011 1110 [- 66]补 -66+) 1100 1101 [−51]补 +) −51 1000 1011 [-117]补 -1171自动丢失43ch2计算机中的数制和编码课件由于[−66]补+[−51]补=10001011B=[(−66)+(−55)]补 结果为负,因此 [(−66)+(−55)]原=[[(−66)+(−55)]补]补=11110101B其真值为−117,计算结果正确。
可以看出,不论被加数、加数是正数还是负数,只要直接用它们的补码直接相加,当结果不超出补码所表示的范围时,计算结果便是正确的补码形式但当计算结果超出补码表示范围时,结果就不正确了,这种情况称为溢出 44ch2计算机中的数制和编码课件 2. 补码减法补码减法补码减法的运算规则为: (2.2.6) 45ch2计算机中的数制和编码课件 例例2.12 已知[+51]补=0011 0011B,[+66]补=0100 0010B[−51]补=1100 1101B,[−66]补=1011 1110B求 [+66]补−[+51]补=?[−66]补− [−51]补=? 解 [+66]补− [+51]补=[+66]补+[−51]补 [−66]补− [−51]补=[−66]补+[+51]补 46ch2计算机中的数制和编码课件 二进制(补码)加法 十进制加法 0100 0010 [+ 66]补 +66+) 1100 1101 [−51]补 -) +51 0000 1111 [+15]补 +151自动丢失 二进制(补码)加法 十进制加法 1011 1110 [- 66]补 -66+) 0011 0011 [+51]补 -) -51 1111 0001 [-15]补 -1547ch2计算机中的数制和编码课件 可以看出,无论被减数、减数是正数还是负数,上述补码减法的规则都是正确的。
同样,由最高位向更高位的进位会自动丢失而不影响运算结果的正确性 计算机中带符号数用补码表示时有如下优点: ① 可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路 48ch2计算机中的数制和编码课件 ② 无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的例如: 无符号数 带符号数 11100001 225 [−31]补+) 00001101 +) 13 +) [+13]补 11101110 238 [−18]补 若两操作数为无符号数时,计算结果为无符号数11101110B,其真值为238,结果正确;若两操作数为补码形式,计算结果也为补码形式,11101110B为–18的补码,结果也是正确的。
49ch2计算机中的数制和编码课件2.2.5 溢出及其判断方法溢出及其判断方法 1. 进位与溢出 所谓进位,是指运算结果的最高位向更高位的进位,用来判断无符号数运算结果是否超出了计算机所能表示的最大无符号数的范围 溢出是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范围例如,字长为n位的带符号数,它能表示的补码范围为−2n−1+2n−1−1,如果运算结果超出此范围,就叫补码溢出,简称溢出 50ch2计算机中的数制和编码课件2. 溢出的判断方法 判断溢出的方法很多,常见的有:① 通过参加运算的两个数的符号及运算结果的符号进行判断② 单符号位法该方法通过符号位和数值部分最高位的进位状态来判断结果是否溢出③ 双符号位法,又称为变形补码法它是通过运算结果的两个符号位的状态来判断结果是否溢出 上述三种方法中,第①种方法仅适用于手工运算时对结果是否溢出的判断,第②和③两种方法在计算机中都有使用 本节仅通过具体例子对第②种方法做简要介绍 51ch2计算机中的数制和编码课件 若符号位进位状态用CF来表示,当符号位向前有进位时,CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示,当该位向前有进位时,DF=1,否则,DF=0。
单符号位法就是通过该两位进位状态的异或结果来判断是否溢出的 (2.2.7) 若OF=1,说明结果溢出;若OF=0,则结果未溢出也就是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否则,结果溢出 52ch2计算机中的数制和编码课件 例2.13 设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问:① 若为无符号数,计算结果是否正确?② 若为带符号补码数,计算结果是否溢出? 解解 无符号数 带符号数 01000100 68 [+68]补+)01001000 +)72 +) [+72]补 10001100 140 [+140]补DF=1CF=053ch2计算机中的数制和编码课件 ① 若为无符号数,由于CF=0,说明结果未超出8位无符号数所能表达的数值范围(0255),计算结果10001100B为无符号数,其真值为140,计算结果正确。
② 若为带符号数补码,由于CF=1,结果溢出;这里也可通过参加运算的两个数的符号及运算结果的符号进行判断,由于两操作数均为正数,而结果却为负数,因而结果溢出;+68和+72两数补码之和应为+140的补码,而8位带符号数补码所能表达的数值范围为−128+127,结果超出该范围,因此结果是错误的 54ch2计算机中的数制和编码课件 例2.14 设有两个操作数x=11101110B,y=11001000B,将这两个操作数送运算器做加法运算,试问:① 若为无符号数,计算结果是否正确?② 若为带符号补码数,计算结果是否溢出? 解解 无符号数 带符号数 11101110 238 [-18]补+)11001000 +)200 +) [-56]补 10110110 438 [-74]补DF=1CF=01自动丢失 55ch2计算机中的数制和编码课件 ① 若为无符号数,由于CF=1,说明结果超出8位无符号数所能 表 达 的 数 值 范 围 (0255)。
两 操 作 数 11101110B和11001000B对应的无符号数分别为238和200,两数之和应为438>255,因此,计算结果是错误的 ② 若为带符号数补码,由于CF=0,结果未溢出两操作数11101110B和11001000B分别为−18和−56的补码,其结果应为−74的补码形式,而计算结果10110110B正是−74的补码,因此结果正确 56ch2计算机中的数制和编码课件2.3 信信 息息 的的 编编 码码 2.3.1 二进制编码的十进制数编码二进制编码的十进制数编码(BCD编码编码) 虽然二进制数对计算机来说是最佳的数制,但是人们却不习惯使用它为了解决这一矛盾,人们提出了一个比较适合于十进制系统的二进制编码的特殊形式,即将1位十进制的09这10个数字分别用4位二进制码的组合来表示,在此基础上可按位对任意十进制数进行编码这就是二进制编码的十进制数,简称BCD码(Binary-Coded Decimal) 57ch2计算机中的数制和编码课件 4位二进制数码有16种组合(00001111),原则上可任选其中的10个来分别代表十进制中09这10个数字。
但为了便于记忆,最常用的是8421 BCD码,这种编码从00001111这16种组合中选择前10个即00001001来分别代表十进制数码09,8、4、2、1分别是这种编码从高位到低位每位的权值BCD码有两种形式,即压缩型BCD码和非压缩型BCD码 58ch2计算机中的数制和编码课件 1.压缩型BCD码 压缩型BCD码用一个字节表示两位十进制数例如,10000110B表示十进制数86 2.非压缩型BCD码 非压缩型BCD码用一个字节表示一位十进制数高4位总是0000,低4位用00001001中的一种组合来表示09中的某一个十进制数 59ch2计算机中的数制和编码课件表表2.2 8421 BCD 码部分编码表码部分编码表 十进制数压缩型BCD码非压缩型BCD码123910111920210001000000010001000110010010000000100001 00000001 0000000000000001 00000001 00000001 0000100100000010 0000000000000010 0000000160ch2计算机中的数制和编码课件 需要说明的是,虽然BCD码可以简化人机联系,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需要的位数比用纯二进制码多,而且用BCD码进行运算所花的时间也要更多,计算过程更复杂,因为BCD码是将每个十进制数用一组4位二进制数来表示,若将这种BCD码送计算机进行运算,由于计算机总是将数当作二进制数来运算,所以结果可能出错,因此需要对计算结果进行必要的修正,才能使结果为正确的BCD码形式。
详见本小节例2.17 61ch2计算机中的数制和编码课件例2.15 十进制数与BCD数相互转换① 将十进制数69.81转换为压缩型BCD数: 69.81=(0110 1001.1000 0001)BCD② 将BCD数1000 1001.0110 1001转换为十进制数:(1000 1001.0110 1001)BCD=89.69 62ch2计算机中的数制和编码课件 例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=9663ch2计算机中的数制和编码课件 例2.17 (BCD码运算时的修正问题)用BCD码求38+49。
解 0011 1000 38的BCD码+) 0100 1001 49的BCD码 1000 0001 81的BCD码 计算结果1000 0001是81的BCD数,而正确结果应为87的BCD数1000 0111,因此结果是错误的其原因是,十进制数相加应该是“逢十进一”,而计算机按二进制数运算,每4位为一组,低4位向高4位进位与十六进制数低位向高位进位的情况相当,是“逢十六进一”,所以当相加结果超过9时将比正确结果少6,因此结果出错解决办法是对二进制加法运算结果采用“加6修正”,从而将二进制加法运算的结果修正为BCD码加法运算结果BCD数相加时,对二进制加法运算结果修正的规则如下: 64ch2计算机中的数制和编码课件 ① 如果两个对应位BCD数相加的结果向高位无进位,且结果小于或等于9,则该位不需要修正;若得到的结果大于9而小于16,则该位需要加6修正 ② 如果两个对应位BCD数相加的结果向高位有进位(结果大于或等于16),则该位需要进行加6修正 因此,两个BCD数进行运算时,首先按二进制数进行运算,然后必须用相应的调整指令进行调整,从而得到正确的BCD码结果。
有关BCD运算结果的调整指令将在第4章 “80x86指令系统”中介绍 65ch2计算机中的数制和编码课件2.3.2 ASCII字符编码字符编码 所谓字符,是指数字、字母以及其他一些符号的总称 现代计算机不仅用于处理数值领域的问题,而且要处理大量的非数值领域的问题这样一来,必然需要计算机能对数字、字母、文字以及其他一些符号进行识别和处理,而计算机只能处理二进制数,因此,通过输入/输出设备进行人机交换信息时使用的各种字符也必须按某种规则,用二进制数码0和1来编码,计算机才能进行识别与处理 66ch2计算机中的数制和编码课件 目前,国际上使用的字符编码系统有许多种在微机、通信 设 备 和 仪 器 仪 表 中 广 泛 使 用 的 是 ASCII码 (American Standard Code for Information Interchange)——美国标准信息交换码ASCII码用一个字节来表示一个字符,采用7位二进制代码来对字符进行编码,最高位一般用做校验位7位ASCII码能表示27=128种不同的字符,其中包括数码(09),英文大、小写字母,标点符号及控制字符等,见表2.3。
该表的使用方法读者应熟练掌握如数字“1”的ASCII码值为31H,字母“A”的ASCII码值为41H,符号“?”的ASCII码值为3FH等 67ch2计算机中的数制和编码课件表表2.3 美国标准信息交换码美国标准信息交换码ASCII(7位代码位代码) 68ch2计算机中的数制和编码课件2.4 数的定点与浮点表示法数的定点与浮点表示法 2.4.1 定点表示定点表示 所谓定点表示法,是指小数点在数中的位置是固定的原理上讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示成纯小数或纯整数形式,如图2.1所示图2.1 定点数的两种表示方法(a) 纯小数形式;(b) 纯整数形式 69ch2计算机中的数制和编码课件 设用一个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。
70ch2计算机中的数制和编码课件定点表示法存在的问题: 因为实际工作中很少遇到数据都是纯小数或纯整数的情况,所以定点表示法要求程序员做的一件重要工作是为要计算的问题选择“比例因子”所有原始数据都要用比例因子化成纯小数或纯整数形式,计算结果又要用比例因子恢复实际值这一过程不仅占用资源,有时为了选择适当的比例因子以免结果溢出,需要反复多次调整比例因子,而且比例因子也需要占用一定的存储空间 71ch2计算机中的数制和编码课件2.4.2 浮点表示浮点表示 所谓浮点表示法,就是小数点在数中的位置是浮动的 任意一个二进制数x总可以写成如下形式: (2.4.3)其中,d称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称为数符,表示数的符号,用尾数前的一位表示,该位为0,表明该浮点数为正,该位为1,表明该浮点数为负;p称为阶码,它前面的符号称为阶符,用阶码前一位表示,阶码为正时,用0表示,阶码为负时,用1表示浮点数的编码格式如图所示 72ch2计算机中的数制和编码课件 可以看出,将尾数d的小数点向右(阶码p为正时)或向左(阶码p为负时)移动p位,即可得到该浮点数表示的数值x。
阶码p指明小数点的位置,小数点随着阶码的大小和正负而浮动,因此把这种数称为浮点数 设阶码的位数为m位,尾数的位数为n位,则该浮点数表示的数值范围为:(2.4.4) 在字长相同的情况下,浮点数能表示的数值范围比定点数大得多,且精度高,但浮点运算规则复杂73ch2计算机中的数制和编码课件例. 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), 则在计算机中相应的表示形式如下: 0 1 1 1 1 1 0 174ch2计算机中的数制和编码课件小小 结结一、进位计数制及其表示方法一、进位计数制及其表示方法(一)、进位计数制及其要素:(一)、进位计数制及其要素: 进位计数制:按进位原则进行计数的方法。
进位计数制:按进位原则进行计数的方法例:十进制数有例:十进制数有 : 0、、1、、2、、3、、4、、5、、6、、7、、8、、9十种状态十种状态我们说:我们说:十进制数基数十进制数基数10,变化范围,变化范围0~((10-1)), 逢十进一逢十进一看一个十进制数:看一个十进制数: 4 0 9 4 每一位十种数码的状态每一位十种数码的状态(0~9) 千千 百百 十十 个个 本位绝对值的大小本位绝对值的大小=数数×位权位权 103102101100 如:千位如:千位= 4×103=400075ch2计算机中的数制和编码课件十进制数有二个要素:十进制数有二个要素: 1. 基数:十基数:十 每一位每一位 0、、1、、2、、3、、4、、5、、6、、7、、8、、10-1 (逢(逢 十十 进进 一) 2. 位权:位权:10i 某一位数绝对值大小某一位数绝对值大小 = 数数×位权位权.二个要素二个要素: 适用于二、八、十六进制适用于二、八、十六进制二进制数:基数二进制数:基数2 位权位权2i 八进制数:基数八进制数:基数8 位权位权8i 十六进制数十六进制数: 基数基数16 位权位权16i76ch2计算机中的数制和编码课件(二)、(二)、 进位计数制的表示方法:进位计数制的表示方法: 1234..56= 1 103+2 102+3 101+4 100+5 10-1+6 10-2推广到一般形式(任意十进制)推广到一般形式(任意十进制):: N=±[k n 10n+k n-1 10 n-1+……+k0 100 +k-1 10-1+…… +k-m 10-m] = ± [ k i 10i] (i= -m~n)任何某一位数大小任何某一位数大小 = k i 10i对于任意进制对于任意进制: N= ± [k i R i](i=-m~n)R — 基数基数 ,, 逢逢R进一进一. Ri— 位位权权77ch2计算机中的数制和编码课件例如:二进制数例如:二进制数 B=10011101 B=1 27+1 24+1 23+1 22+1 20 =((157))10 在计算机里进行运算和处理均是按在计算机里进行运算和处理均是按二进制数二进制数处理的。
处理的而二进制数写起来麻烦而二进制数写起来麻烦;书写时又以书写时又以八进制或十六进制八进制或十六进制表示;表示;日常生活中又常用日常生活中又常用十进制十进制,,因此就有:因此就有:二二 十十 八八 十十 二二 八八 数制之间转换问题数制之间转换问题 十六十六 十十 二二 十六十六78ch2计算机中的数制和编码课件二、二、 数制之间的转换:数制之间的转换:(一)、(一)、 十十 二二1.整数整数 十十 → 二二 (除(除2取余法,降幂法)取余法,降幂法)2.((1))除除2取余法取余法 ((217))10=k n 2n+ k n-1 2 n-1+…… k1 21 +k0 20 = 2(k n 2 n-1+k n-1 2 n-2+……+k1 20)+k0•2(k n 2 n-1+k n-1 2 n-2+……+k 1 20) 是是2的倍数的倍数•k0 是余数是余数.79ch2计算机中的数制和编码课件((217))10÷2 ----得到余数得到余数k0 /2 整数整数 商商 余数:余数: 按照相反的方向写下来。
按照相反的方向写下来 /2 /2 /2 /2 /2 /2 /2 /2217 108 54 27 13 6 3 1 0 ----商商 1 0 0 1 1 0 1 1 ----余数余数(217)10=((11011001))2书写方向书写方向80ch2计算机中的数制和编码课件结论结论结论结论::整数除整数除整数除整数除2 2取余,直到商为取余,直到商为取余,直到商为取余,直到商为0 0为止,为止,为止,为止, 读数由后向前适用于数值比较小的情况读数由后向前适用于数值比较小的情况2)降幂法)降幂法:计算(计算(217))10=((1101 1001))2权值:权值: 210 29 28 27 26 25 24 23 22 21 20 1024 512 256 128 64 32 16 8 4 2 1217-27=89a7=1 ,, 9 - 23=1 a3=1 89-26=25a6=1 ,, a2=0 a5=0 ,, a1=0 25- 24=9a4=1 ,, 1 - 20=0 a0=181ch2计算机中的数制和编码课件2.小数十小数十→二二: 乘乘2取整取整3. 方法:对十进制数逐次乘方法:对十进制数逐次乘2,,4. 小数点前边系数为系数小数点前边系数为系数k i。
即乘即乘2取整法,位数取决于要求精度取整法,位数取决于要求精度如:如: (0.613)10 2=1.226 k-1=1 (0.226)10 2=0.452 k-2=0 (0.452)10 2=0.904 k-3=0 (0.904)10 2=1.808 k-4=1 ((0. 1001))2 =((0. 5625))10 (0.808)10 2=1.616 k-5=1 ((0.10011))2=((0. 609375))10 (0.616)10 2=1.232 k-6=1 (0.613)10=(0.1001)2 k-7=082ch2计算机中的数制和编码课件 3. 二二→十十 同样可以用公式进行同样可以用公式进行((0. 1001))2 =1 2-1+1 2-4=0. 5+0. 0625=((0. 5625))10((0.10011))2=1 2-1+1 2-4+1 2-5+1 2-6 =((0. 609375))10看一下常用的几种数制写法:八位二进制数看一下常用的几种数制写法:八位二进制数83ch2计算机中的数制和编码课件 十进制十进制 二进制二进制 八进制八进制 十六进制十六进制 BCD 0 0 0 0 0 1 1 1 1 12 10 2 2 103 11 3 3 114 100 4 4 1005 101 5 5 1016 110 6 6 1107 111 7 7 1118 1000 10 8 10009 1001 11 9 100110 1010 12 A 1000011 1011 13 B 1000112 1100 14 C 1001013 1101 15 D 1001114 1110 16 E 1010015 1111 17 F 1010116 10000 20 10 10110. . . 11 .. . . 12 .. . . . . (255)D 11111111B 377Q FFH (10,0101,0101)BCD84ch2计算机中的数制和编码课件(二)、(二)、二二 八,二八,二 十六,二十六,二 BCD之间转换之间转换 1、、二二 八八 二二→ 八:八:以小数点为界向左向右三位一段,不够补以小数点为界向左向右三位一段,不够补0,,三位二进制数用一位八进制数表示。
三位二进制数用一位八进制数表示例:(例:( 1,,101,,001.010,,011,,1 ))2 不够补不够补0 不够补不够补0 ((001 101 001. 010 011 100))2=((151.234))8 八八→二:二: 一位八进制数用三位二进制数表示一位八进制数用三位二进制数表示. ((151..234))8=((001 101 001. 010 011 100))285ch2计算机中的数制和编码课件2、二、二 十六:十六: 二二→十六:十六:以小数点为界向左向右四位一段,以小数点为界向左向右四位一段, 不够补不够补0, 四位二进制数用一位十六进制数表示四位二进制数用一位十六进制数表示例:(例:( 110 1001.0100 111 ))2 →( 69.4E )16 不够补不够补0 不够补不够补0(0 1 1 0,1 0 0 1 . 0 1 0 0,1 1 1 0)2=(69 . 4E)16 十六十六→二:二:一位十六进制数用四位二进制数表示。
一位十六进制数用四位二进制数表示例:例: (69 . 4E)16 = (0 1 1 0,1 0 0 1 . 0 1 0 0,1 1 1 0)286ch2计算机中的数制和编码课件3、、 二二 BCDBCD数:数:常用常用8421码,每一位码,每一位十进制数十进制数用用四位二进制编码表示四位二进制编码表示 1111B9D1001BCD 10D 0001 0000BCDBCD码与二进制数之间转换没有直接关系,码与二进制数之间转换没有直接关系,必须先转换成十进制必须先转换成十进制,然后转换成二进制然后转换成二进制例:例:1111111B=255D=0010,0101,0101BCD0010,0101,0101BCD==255D=1111 1111B87ch2计算机中的数制和编码课件三.字和各种字符的编码(三.字和各种字符的编码( ASCⅡ编码)编码) 字和各种字符按照特定规则用二进制编码在机器中表示字和各种字符按照特定规则用二进制编码在机器中表示编码有各种方式:编码有各种方式:目前规定在微型机中最普遍采用目前规定在微型机中最普遍采用ASCⅡ码码((American Standard Code for Information Interchange ) 美国标准信息交换码。
美国标准信息交换码参看参看 P15 ASCⅡ码表一)二进制数的运算(一)二进制数的运算 (二)带符号数的表示二)带符号数的表示88ch2计算机中的数制和编码课件ASCⅡ码码: 采用七位二进制编码采用七位二进制编码,可以表示,可以表示128个字符 bit7作奇偶校验位,在机器中表示时,常认为作奇偶校验位,在机器中表示时,常认为“0”,, 用一个字节(用一个字节(8位)表示一个位)表示一个ASCⅡ字符常用的常用的ASCⅡ字符:字符:0—9 的的ASCⅡ码码30H—39HA—Z 的的ASCⅡ码码41H—5AH a—z 的的ASCⅡ码码61H—7AH89ch2计算机中的数制和编码课件(一)二进制数的运算(自学(一)二进制数的运算(自学P3-P7)) (二)带符号数的表示(二)带符号数的表示 1. 机器数与真值机器数与真值 2. 原码原码 3. 反码反码 4. 补码补码 90ch2计算机中的数制和编码课件上面提到的是一种无符号数,上面提到的是一种无符号数,机器数中会有正有负机器数中会有正有负符号怎么表示呢?符号怎么表示呢?通常数的最高位为符号位,对于字长通常数的最高位为符号位,对于字长8位机器数:位机器数: D7为符号位为符号位: 0表示表示“+”,,1表示表示“—”。
符号数码符号数码化了 D6~~D0为数字位为数字位如如: X=((01011011))2=+91 X=((11011011))2= - 91连同符号位在一起作为一个数称为机器数,连同符号位在一起作为一个数称为机器数,机器数的数值称为真值机器数的数值称为真值如如: N1=+ 1011011 N2= - 1011011 为真值为真值0 1011011 1 101 1011 为机器数为机器数91ch2计算机中的数制和编码课件符号数码化了符号数码化了,对数据进行运算时,,对数据进行运算时,符号位应如何处理?符号位应如何处理?把符号位和数值位一起编码:原码,反码,补码把符号位和数值位一起编码:原码,反码,补码 2. 原码原码::正数符号位用正数符号位用“0”表示,负数符号用表示,负数符号用“1”表示,表示,这种表示法称为原码这种表示法称为原码 X=+105 [X]原原= 0 1101001 X=-105 [X]原原= 1 1101001 符号符号 数值数值原码表示简单原码表示简单,真值转换方便,减法不方便。
真值转换方便,减法不方便引进引进反码,补码反码,补码92ch2计算机中的数制和编码课件3. 反码反码:: 正数反码表示与原码相同,正数反码表示与原码相同, (最高位最高位“0”表示正,其余位为数值位表示正,其余位为数值位) 负数的反码表示为负数原码的符号位不变尾数按位取反负数的反码表示为负数原码的符号位不变尾数按位取反例:例: [+4]反反 = 0 0000100[-4]反反 = 1 1111011 [+127]反反 = 0 1111111[-127]反反 = 1 0000000 [+0]反反 = 0 0000000 [-0]反反 = 1 111111193ch2计算机中的数制和编码课件4. 补码:补码: 正数的补码表示与原码相同,正数的补码表示与原码相同, (最高位最高位 用用“0”表示正,其余位为数值位表示正,其余位为数值位.) 负数的补码表示为它的反码负数的补码表示为它的反码+1[+127]原原=0 1111111 [+0]原原=0 0000000[-127]反反=1 0000000 [-0]反反=1 1111111[-127]补补=1 0000001 [-0]补补=0 000000094ch2计算机中的数制和编码课件引进补码以后,做原码的减法与做补码的加法结果相引进补码以后,做原码的减法与做补码的加法结果相同但必须以同但必须以⊕ ⊕为模。
为模先以十进制为例说明补码的用法先以十进制为例说明补码的用法7-4=3 7-(10-6)=3 7+6=13-10=3∴∴6是是4以以10为模的补码,减为模的补码,减4就可以变成就可以变成+6计算对三位十进制数来讲:对三位十进制数来讲: 9 1 6 –317=599 9 1 6 + 6 8 3 = 1 5 9 9--1 0 0 0= 5 9 9则则683是是317以以1000为模的补码为模的补码如何得到如何得到683?? 1 0 0 0 - 3 1 7 = 6 8 3 (补码)(补码)逐位减不必借位逐位减不必借位+1 1 + 9 9 9 - 3 1 7= 1 + 6 8 2 (反反码)码)95ch2计算机中的数制和编码课件从定义出发得出补码求法:从定义出发得出补码求法:[X]补补=P n +X N位位P进制的补码,将进制的补码,将P n-1按位减去后再按位减去后再+1得到补码得到补码对于二进制补码:对于二进制补码: 0111 –0101= 0010 7 –5= 2 p=2, n=4 ,, 模模24=10000 =1111+1 1111–0101 +1 = 1010+1 = 1011 P n-1 0101的反码的反码 0101补码补码 (( 即即0101的反码的反码+1))0 1 1 1 - 0 1 0 1= 0 0 1 00 1 1 1 + 1 0 1 1 = 1 0 0 1 0 - 1 0 0 0 0= 0 0 1 0 0101补码补码模模96ch2计算机中的数制和编码课件四、小结四、小结1. 进位计数制及其要素:进位计数制及其要素: 基数基数R, 位权位权R i ,每位数值,每位数值k i=0……(R-1) 2. 进位计数制表示方法:进位计数制表示方法:N= ± [K i R i] (i=- m~n)某位数大小某位数大小 = K i R i 97ch2计算机中的数制和编码课件3. 数制之间转换数制之间转换10→2 整数:整数:10→2,除,除2取余,直到商为取余,直到商为0。
小数:小数:10→2,乘,乘2取整,直到要求精度取整,直到要求精度 混合小数:混合小数:10→2,整数小数分别转换,然后组合起来整数小数分别转换,然后组合起来2→10 用公式展开或者用凑试法用公式展开或者用凑试法2→8 以小数点为界向左向右三位一段,以小数点为界向左向右三位一段,不够补不够补0,三位二进制数用一位八进制数表示三位二进制数用一位八进制数表示8→2 一位八进制数用三位二进制数表示一位八进制数用三位二进制数表示98ch2计算机中的数制和编码课件2→16 以小数点为界向左向右四位一段,不够补以小数点为界向左向右四位一段,不够补0,, 四位二进制数四位二进制数 用一位十六进制数表示用一位十六进制数表示16→2 一位十六进制数用四位二进制数表示一位十六进制数用四位二进制数表示2→BCD 先将二进制数先将二进制数→十进制数十进制数→BCD数BCD→2 先将先将BCD数变成十进制数数变成十进制数→二进制数二进制数任意进制数与十进制数之间转换原理和方法与二任意进制数与十进制数之间转换原理和方法与二→十十类似。
类似8→十十 按按8i展开然后再按十进制相加展开然后再按十进制相加十十→8 整数除整数除8取余,小数乘取余,小数乘8取整99ch2计算机中的数制和编码课件4 . 三种码制之间关系及特点:三种码制之间关系及特点:正数:正数:原,反,补相同原,反,补相同负数:负数:原,反,补不同,但最高位为原,反,补不同,但最高位为1负数负数: 原原→反,反, 符号位不变,尾数按位求反符号位不变,尾数按位求反 原原→补补 ,符号位不变,尾数按位求反,符号位不变,尾数按位求反+1 补补→原,原, 符号位不变,尾数求反符号位不变,尾数求反+1 反反→原原 ,符号位不变,尾数求反,符号位不变,尾数求反.100ch2计算机中的数制和编码课件5. “0”的表示的表示 原码原码反码反码补码补码[+0]原原=000…00[+0]反反=000…00[+0]补补=000…00[-0]原原=100…00[-0]反反=111…11[-0]补补=000…00 6..数的表示范围:数的表示范围:8位二进制数位二进制数无符号数:无符号数:0~255原原 码码 ::-127~+127反反 码码 ::-127~+127补补 码码 ::-128~+127101ch2计算机中的数制和编码课件练习题练习题 1.填空题[+38]原= [-38]反= [-38]补=2.选择题(1)在下面几个不同进制数中,最大的数是( )。
A.1100010B B.255Q C.500 D.1FEH(2)十进制数-75用二进制数10110101表示,其表示方式是( ) A.原码 B.补码 C.反码 D.ASCII码3.计算题 将十进制数8609变为压缩型BCD码和非压缩型BCD码102ch2计算机中的数制和编码课件5. “0”的表示的表示 原码原码反码反码补码补码[+0]原原=000…00[+0]反反=000…00[+0]补补=000…00[-0]原原=100…00[-0]反反=111…11[-0]补补=000…00 6..数的表示范围:数的表示范围:8位二进制数位二进制数无符号数:无符号数:0~255原原 码码 ::-127~+127反反 码码 ::-127~+127补补 码码 ::-128~+127103ch2计算机中的数制和编码课件5. “0”的表示的表示 原码原码反码反码补码补码[+0]原原=000…00[+0]反反=000…00[+0]补补=000…00[-0]原原=100…00[-0]反反=111…11[-0]补补=000…00 6..数的表示范围:数的表示范围:8位二进制数位二进制数无符号数:无符号数:0~255原原 码码 ::-127~+127反反 码码 ::-127~+127补补 码码 ::-128~+127104ch2计算机中的数制和编码课件。