补充:计算机中的数和编码计算机只识别和处理数字信息,数字是以二进制数的形式表示的。它易于物理实现,同时,资料存储、传送和处理简单可靠;运算规则简单,使逻辑电路的设计、分析、综合方便,使计算器具有逻辑性。一、数制1、常用数制(1.)十进制数:1985=1000+900+80+5=1×103+9×102+8×101+5×100特点:有0~9十个不同的符号。逢十进一。一般用下脚标D表示,如1985D,或无下脚标。(2.)二进制数:特点:有0,1两个不同的符号。逢二进一。二进制数的下脚标为B例如:对于整数,1001B=1×23+0×22+0×21+1×20=9D对于小数,0.101B=1×2-1+0×2-2+1×2-3=0.625D二进制数每一位的权是:以小数点分界,…..24,23,22,21,20.2-1,2-2,2-3,……(3.)十六进制数:有0~9,A,B,C,D,E,F共十六个不同的符号。逢十六进位。用下脚标“H”表示十六进制数。例:327H=3×162+2×161+7×160=807D3AB.11H=3×162+A×161+B×160+1×161+1×16-2=939.0664D2、数制的转换(1.)二进制转换为十进制数方法:按权展开。111.101B=1×22+1×21+1×20+1×2-1+0×2-2+1×2–3=4+2+1+0.5+0.125=7.625D(2.)十进制数转换为二进制数方法:整数部分除二取余,小数部分乘二取整45余数22111051211011222222即45=(101101)2例1、将十进制数45转换成二进制数。例2:十进制小数部分的转换:乘二取整0.6875×2最高位取11.37500.375×2取00.750×2取11.500.5×2最低位取11.0从上至下写成从左至右10110.6875D=0.B二进制数转换成八进制数与上述类似。(3.)十六进制数与二进制数之间的转换:十六进制数转换为二进制:9AB.7C5H100110101011.011111000101B二进制数转换十六进制数:0001101111100011.100101111000B1BE3.978H二、数码1、机器数与真值机器只认识二进制数:0、1。这是因为,电路状态常常有两种情况,如:电路的通、断;高电平、低电平;可用0、1表示。在机器中,这种0、1、0、1的表现形式称为机器数。机器数分为无符号数、带符号数。无符号数如:00000001、10010011、01010010、……等等,范围:00H~FFH。有符号数如:+1010110B、-1101001B、等等01010110B11101001B2、机器数的编码及运算对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。(1)原码将数“数码化”,原数前“+”用0表示,原数前“-”用1表示,数值部分为该数本身,这样的机器数叫原码。设X——原数;则[X]原=X(X0)[X]原=2n-1–X(X0),n为字长的位数。如,[+3]原=00000011B[-3]原=27-(-3)=10000011B0有两种表示方法:00000000——+010000000——-0原码最大、最小的表示:+127、-128(2)反码规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。[X]反=X(X0)[X]反=(2n–1)+X(X0)如,[+4]反=[+4]原=00000100B[-4]反=(28–1)+(-5)=11111111-00000101=11111010B反码范围:-128~+127两个0:+0——00000000B-0——11111111B运用补码可使减法变成加法。规定:正数的补码等于原码。负数的补码求法:1)反码+12)公式:[X]补=2n+X(X0)如,设X=-0101110B,则[X]原=10101110B则[X]补=[X]反+1=11010001+00000001=11010010B如,[+6]补=[+6]原=00000110B[-6]补=28+(-6)=10000000–00000110=11111010B8位补码的范围–128~+127。0的个数:只一个,即00000000而10000000B是-128的补码。原码、反码、补码对照表:见下表123(3)补码补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。八位二进制数所能表示的数据范围机器数无符号数原码反码补码000000000+0+0+0000000011+1+1+1.....01111111127+127+127+12710000000128-0-127-12810000001129-1-126-127..........11111110254-126-1-211111111255-127-0-1(4)补码的运算当X≥0时,[X]补=[X]反=[X]原[[X]补]补=[X]原[X]补+[Y]补=[X+Y]补[X-Y]补=[X+(-Y)]补例:已知X=52Y=38求X-Y方法1:减法:X-Y=52-38=1400110100-)0010011000001110方法2:加法X-Y=[[X-Y]补]补=[[X]补+[-Y]补]补=[[52]补+[-38]补]补=[14]补=14[52]补:00110100[-38]补:+)11011010100001110自然丢失计算机在做算术运算时,必需检查溢出,以防止发生错误(5)运算的溢出问题由于计算机中表示数据的字长(位数)有一定限制,所以数据的表示应有一个范围。如字长8位时;补码范围-128~+127若运算结果超出这个范围,便溢出。例:[98]补:01100010[25]补:+)00011001[123]补001111011未溢出00C1⊕C2=0(未溢出)[85]补:01010101[47]补:+)00101111[132]补:10000100溢出01C1⊕C2=1(溢出)错:两个正数相加和为负数。[-85]补:10101011[-47]补:+)11010001[-132]补:101111100溢出10C1⊕C2=1错:两个负数相加和为正数。[-19]补:01010101[-79]补:+)10110001[-98]补:11001111未溢出11C1⊕C2=1错:两个负数相加和为正数。总之:结果正确(无溢出)时,C1⊕C2=0结果错误(溢出)时,C1⊕C2=0溢出判断:溢出=C1⊕C2=0(即结果是0无溢出;1有溢出)1、(6)十进制数的编码对机器:二进制数方便,对人:二进制数不直观,习惯于十进制数。在编程过程中,有时需要采用十进制运算,但机器不认识十进制数。怎么办?可以将十进制的字符用二进制数进行编码:00000501011010111110001601101011200107011111003001181000110140100910011110这叫做二进制数对十进制编码——BCD码。上述每4位二进制数表示一个十进制字符,这4位中各位的权依次是:8、4、2、1——8421BCD码。BCD码的运算:例、18+)32100011000+)0000001100011011B是非BCD码(错)需进行十进制调整:00011000+)0000001100011011(个位大于9,应进1)+)0110(加6使进1)00100001(结果形如21)BCD码加法规则:两个BCD数相加时,“某位”的和小于10则保持不变;两个BCD数相加时,“某位”的和大于9,则和数应加6修正。BCD码减法规则:两个BCD数相减时,“某位”的差未发生借位,则差数保持不变;两个BCD数相减时,“某位”发生了借位,其差应减6修正。这里“某位”指BCD数中的“个位”、“十位”、“百位”、……加法举例:01100101(65)+)10010111(97)11111100+)01100110(加66调整)101100010(162)减法举例:00110100(34)-)00010101(15)00011111-)0110(减6调整)00011001(29)(7)字符信息的表示计算机能识别0、1、0、1、……;这些0、1、0、1、……有的代表数值,有的仅代表要处理的信息(如字母、标点符号、数字符号等文字符号),所以,计算机不仅要认识各种数字,还要能识别各种文字符号。人们事先已对各种文字符号进行二进制数编码。如,美国信息交换标准码——ASCII码,用一个字节表示一个字符。低7位是字符的ASCII码值;最高位是通信时的校验位。计算机常用编码•常见的编码有BCD码、ASCII码等。1.二—十进制编码•是一种用二进制编码的十进制数,称BCD码。BCD码用标准的8421的纯二进制码的十六个状态中的十个(如表1-2所示)。•用BCD码表示十进制数,只要将每位十进制数用适当的四位二进制码代替即可。表1-2BCD编码2.字母和符号的编码•微机普遍采用的是ASCII码(如表1-3所示)。ASCII码是一种八位代码,最高位一般用于奇偶校验,其余七位二进制码对128个字符进行编码。表1-3ASCII(美国标准信息交换码)表返回本节THANKYOU!