计算机中的数据表示与编码.ppt
1.2 计算机中的数据表示与编码计算机中的数据表示与编码 例如,用10个阿拉伯数字表示数值,用26个英文字母构成英文词汇,就是现实生活中编码的典型例子。因此,不论是什么信息,在输入计算机内部时,都必须用基2码编码表示,以方便存储、传送和处理。基2码的两个符号“1”和“0”正好与逻辑数据“真”与“假”相对应,为计算机实现逻辑运算带来了方便。基2码在物理上最容易实现。在计算机中,广泛采用的是仅用“0”和“1”两个基本符号组成的基基2码码,亦称为二进制码二进制码。这是由于以下三个原因:基2码用来表示数,其编码、加减乘除运算规则简单。所谓编码,就是用少量、简单的基本符号,选用一定的组合规则,来所谓编码,就是用少量、简单的基本符号,选用一定的组合规则,来表示大量复杂多样的信息。基本符号的种类和这些符号的组合规则构成编表示大量复杂多样的信息。基本符号的种类和这些符号的组合规则构成编码的两大要素。码的两大要素。1.2.1 数和数制数和数制1.数制与进位记数法数制与进位记数法 w 十进制十进制:逢十进一逢十进一 0,1,9w二进制二进制:逢二进一逢二进一 0,1w八进制八进制:逢八进一逢八进一 0,1,7w十六进制:十六进制:逢十六进一逢十六进一 0,1,9,A,B,C,D,E,F例例:(892)10 或或 892D例例:(10010)2 或或 10010B例例:(71)8 或或 71O 例例:(3A)16 或或 3AH2.数制转换数制转换w 二、八、十六进制二、八、十六进制 十进制十进制w 十进制十进制 二、八、十六进制二、八、十六进制w 二进制二进制 八、十六进制八、十六进制w 八、十六进制八、十六进制 二进制二进制(1)二二(八、十六八、十六)进制进制 十进制十进制:w二进制:二进制:2n23 22 21 20.2-1 2-2 2-mw八进制:八进制:8n83 82 81 80.8-1 8-2 8-mw十六进制十六进制:16n163 162 161 160.16-1 16-2 16-m各种进制位权如下各种进制位权如下:按权展开相加按权展开相加11001010.11016512023.2307178ABDF03.67DEF3十进制数十进制数:58655.535w十进制十进制:10n103 102 101 100.10-1 10-2 10-m(1101.1)2=120+=(13.5)10(371.2)8=28-1=(249.25)10(4E.8)16=8 16-1=(78.5)10123+12-1122+021+3 82+781+1 80+=192+56+1+0.254 161+14160+=64+14+0.5(2).十进制十进制 二、八、十六进制二、八、十六进制 整数部分整数部分:除除 2(8,16)取余取余例例 (77.25)10=(1001101.01)2=(115.2)8=(4D.4)16小数部分小数部分:乘乘 2(8,16)取整取整7 7 0.2 5 20.5 0 21.0 01001101.01(77.25)10=()2余数余数23 8(11 9 2(029(124(122(021(02 0(17 7115.0.2 5 82.0 02(77.25)10=()8余数余数89(581(180(14D.0.2 5 1 64.0 04(77.25)10=()16 余数余数7 7164(13160(4(3).二进制二进制八进制八进制:十六进制十六进制:例例:(1 0 0 1 1 0 1.0 1)25112(1 0 0 1 1 0 1.0 1)2D44=()8115.2=()164D.43位转换成位转换成1位位4位转换成位转换成1位位例例:八进制八进制十六进制十六进制 二进制二进制1位转换为位转换为3位位1位转换为位转换为4位位(1 3 5.2)8=()2010(4 D.4)16=()20100(4).101011001.11010100.1.2.2 计算机中带符号数的表示方法计算机中带符号数的表示方法例:例:-001 11001.原码原码 在计算机中,把在计算机中,把数的符号位、数值位数的符号位、数值位一起用一起用二进制数表示二进制数表示的编码,的编码,称为称为机器码机器码。一般最高有效位为符号位,用。一般最高有效位为符号位,用0代表正数,用代表正数,用1代表负数,代表负数,通常有三种表示法:原码、补码和反码。通常有三种表示法:原码、补码和反码。数值在计算机中的表示形式数值在计算机中的表示形式(二进制数二进制数)。真值真值:例:例:1001 1100真值真值机器码机器码 原码的表示方法原码的表示方法符号位用符号位用0或或1表示,数值部分不变表示,数值部分不变0的原码表示的原码表示(两种方法两种方法)例例:(设机器字长为设机器字长为8位位)16的原码为的原码为 0 0010000-16的原码为的原码为 1 0010000+0原原=00000000-0 原原=1000000013的原码为的原码为 0 0001101-13的原码为的原码为 1 00011012.反反 码码 表示方法表示方法 0的反码表示的反码表示(两种方法两种方法)X0时,时,X反反=X原原X0时,时,X补补=X原原X0时,时,X补补=X反反+1+0补补=00000000-0补补=11111111+1=0000000016的原码为的原码为 0 0010000-16的原码为的原码为 1 001000016的补码为的补码为 0 0010000-16的反码为的反码为 1 1101111-16的补码为的补码为 1 1110000例例1.11 机器字长机器字长n=8位,位,x=+56D,求,求x补补,结果用十六进制表示。,结果用十六进制表示。-56D=-0111000B,注意:注意:为了区别指令码和数据,规定为了区别指令码和数据,规定AF开始的数据前面加零。开始的数据前面加零。解解:因为机器字长是因为机器字长是8位,其中符号占了位,其中符号占了1位,所以数值部分应占位,所以数值部分应占7位:位:+56D=+0111000B,例例1.12 机器字长机器字长n=8位,位,x=-56D,求,求x补,结果用十六进制表示。补,结果用十六进制表示。解解:因为机器字长是因为机器字长是8位,其中符号占了位,其中符号占了1位,所以数值部分应占位,所以数值部分应占7位:位:则则+56补补=0 0111000B=38H则则-56补补=1 1001000B=0C8H例例1.13 机器字长机器字长n=16位,位,x=+56D,求,求x补,结果用十六进制表示。补,结果用十六进制表示。+56D=+111000B=+000 0000 0011 1000B解解:因为机器字长是因为机器字长是16位,其中符号占了位,其中符号占了1位,所以数值部分应占位,所以数值部分应占15位:位:-56D=-111000B=-000 0000 0011 1000B=-0038H解解:因为机器字长是因为机器字长是16位,其中符号占了位,其中符号占了1位,所以数值部分应占位,所以数值部分应占15位:位:例例1.14 机器字长机器字长n=16位,位,x=-56D,求,求x补,结果用十六进制表示。补,结果用十六进制表示。则+56补=0 000 0000 0011 1000B=0038H则-56反=1 111 1111 1100 0111B=0FFC7H则-56补=1 111 1111 1100 1000B=0FFC8H4.二进制数补码的运算二进制数补码的运算 补码加法补码加法X+Y补补=X补补+Y补补 (mod 2n)补码减法补码减法X-Y补补=X补补+-Y补补进位,丢掉进位,丢掉解解:+15D=+0001111B+15补=0 0001111-33D=-0100001B-33反 =1 1011110-15D=-0001111B-15反 =1 1110000 0 0110000 +48补1 1101110 -18补例例1.15用补码进行下列运算:用补码进行下列运算:(+33)+(+15);(-33)+(+15);(+33)+(-15);(-33)+(-15)1 1011111 -33补+0 0001111 +15补0 0100001 +33补+0 0001111+15补0 0100001 +33补1 1011111 -33补+1 1110001 -15补+1 1110001 -15补(1)0 0010010 +18补 (1)1 1010000 -48补+33补=0 0100001+33D=+0100001B-33补 =1 1011111-15补 =1 1110001进进位,位,丢丢掉掉例例1.17设x=+64D,y=+10D,用补码计算x-y,结果用十进制形式表示。所以所以x-y=+0110110B=+54Dx-y补=0 0110110 x=+1000000Bx补补=0 1000000解解:y=+0001010B-y补补=1 1110110 0 1000000 x补补+1 1110110 -y补补(1)0 0110110 x-y补补2.定点整数定点整数1.定点小数定点小数1.2.3 定点数与浮点数定点数与浮点数X=XSX-1X-2 X-MX=XSXn-1Xn-2 X2 X1X0小数点的位置在所有数字之前小数点的位置在所有数字之前小数点的位置在所有数字之后小数点的位置在所有数字之后3.浮点数浮点数110.1001=1.101001*2+10=0.1101001*2+11=110100.1*2-11科学记数法科学记数法:阶符阶符阶码阶码数符数符尾数尾数定点纯整数定点纯整数定点纯小数定点纯小数0 或或 1图图1.1浮点数存储格式浮点数存储格式 图图1.2浮点数存储格式浮点数存储格式 图图1.3IEEE 754 32位浮点数标准格式位浮点数标准格式 0.1011*21111w是一种用二进制编码表示十进制数的编码方法是一种用二进制编码表示十进制数的编码方法w最最常用的常用的BCD码是码是8421码码.用用4位二进制编码表示位二进制编码表示1位十进制数位十进制数.(5 2 9)10=(0101 0010 1001)BCD1.2.4 十进制数的编码十进制数的编码1.BCD码码(二二十进制码十进制码)例如例如:2.BCD码的加减运算码的加减运算BCD码的运算规则:码的运算规则:当两个当两个BCD码相加,如果和等于或小于码相加,如果和等于或小于1001,即,即9H,不需要修正;,不需要修正;如果相加之和在如果相加之和在1010到到1111即即0AH0FH之间,则需加之间,则需加6H加以修正;加以修正;如果相加时本位产生了进位,则需加如果相加时本位产生了进位,则需加6H加以修正。加以修正。解解:(4)BCD=0100,(5)BCD=0101运算过程如下:运算过程如下:0 1 0 04 +)0 1 0 1 51 0 0 19例例1.21 利用利用BCD码计算计算码计算计算5+7。解解:(5)BCD=0101,(7)BCD=0111运算过程如下:运算过程如下:0 1 0 15+)0 1 1 171 1 0 0结果大于结果大于9+)0 1 1 0 加加6修正修正1 0 0 1 012例例1.20 利用利用BCD码计算码计算4+5。进位进位保留保留(8)BCD=1000,(9)BCD=1001例例1.22 利用利用BCD码计算计算码计算计算8+9。解解:运算过程如下:运算过程如下:1 0 0 0 8+)1 0 0 1 91 0 0 0 1 产生进位产生进位+)0 1 1 0 加加6修正修正1 0 1 1 1 171.2.5 ASCII字符代码字符代码编码顺序编码顺序8位版本位版本:用用8个二进制位代表一个字符个二进制位代表一个字符(256个个)大写字母大写字母AZ小写字母小写字母az1.ASCII码码西文字符在计算机内的二进制表示西文字符在计算机内的二进制表示两种版本两种版本(American Standard Code For Information Interchange)7位版本:用位版本:用7个二进制位代表一个字符个二进制位代表一个字符(128个个)控制字符空格数字控制字符空格数字09本讲重点本讲重点:1.数制、数制转换数制、数制转换2.计算机中数的表示方法、码制计算机中数的表示方法、码制3.补码的运算补码的运算4.BCD码码5.ASCII码码