您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 2.5-原码、补码、反码
2.5原码、反码和补码2/54符号位“0”表示正、“1”表示负一、数值在计算机中的表示10101100把数值真值数的“+”、“-”符号用“0”和“1”表示机器数:真值:例如:76其真值数:-76其真值数:数值用7个二进制表示,符号保留+0101100-0101100-76其机器数:10101100(设一个数占8位)3/54机器数表示法运算带来问题复杂性:例(-5)+4的运算10000101…………-5的机器数+00000100…………4的机器数10001001…………运算结果为-9为便于运算,引入了多种编码表示方式,常用的是:原码、反码和补码,其实质是对负数表示的不同编码。正数这三种情况都一模一样。结果应为-1。2020年3月10日4原码、反码和补码(1)原码0X1|X|0=XX=0+7:00000111+0:00000000-7:10000111-0:10000000[X]原=0的表示不唯一不便于进行加减运算1000010100000100+10001001-5的原码结果为-94的原码2020年3月10日5(2)反码0X1|X|0=XX=0+7:00000111+0:00000000-7:11111000-0:11111111[X]反=0的表示不唯一不便于进行加减运算•正数的反码与其原码相同,最高位为0表示正数,其余位为数值位。•负数的反码是其符号位取1,对应的数值部分按位取反求得。2020年3月10日6(3)补码0X1|X|+10=XX=0+7:00000111+0:00000000-7:11111001-0:00000000[X]补=0的表示唯一正确进行加减运算,加减法统一为加法。字长范围的最小值不适用,X=-1111111•正数的补码与其原码相同。负数的补码是在其反码的最低位上加1得到。2020年3月10日7补码原理的分析•“模”的概念:指一个计量系统的计数范围。•如时钟计量范围是0~11,模=12。•计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。•n位存储长度的计算机计量范围是0~2(n)-1,模=2(n)。•“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。•任何有模的计量器,均可化减法为加法运算。•假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6另一种是顺拨8小时:10+8=12+6=6在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。2020年3月10日8原码、反码和补码转换规则•正数的原码、反码、补码的表示形式相同,符号位为0,数值位是真值本身;•负数的原码、反码、补码的符号位都为1,数值位原码是真值本身,反码是各位取反,补码是各位取反后,最低位加1。•真值0的原码和反码表示不唯一,而补码表示是唯一的。9/540X1|X|0=XX=0+7:00000111+0:00000000-7:10000111-0:10000000[X]原=0X1|X|0=XX=0+7:00000111+0:00000000-7:11111000-0:11111111[X]反=+7:00000111+0:000000000X1|X|+10=XX=0-7:11111001-0:00000000[X]补=带符号数的表示假定一个数在机器中占用8位,最高位符号位。(1)原码:即机器数形式:符号位|X|0不唯一0不唯一0唯一(3)补码:负数:反码加1,即去-号取反加一(2)反码:负数:去-号取反10/54举例:假定一个数在机器中占用8位,最高位符号位。求出10,-10,120,-120的原码、反码及补码求出130,-130的原码、反码及补码10:000010100000101000001010-10:100010101111010111110110120:01111000-120:130:0111100001111000111110001000011110001000数值超出7位,超出8位表数范围,所以只能用16位表示00000000100000101000000010000010-130:11111111011111011111111101111110原码:反码:补码:原码:反码:补码:原码:反码:补码:原码:反码:补码:11/54★原码、反码、补码的表数范围??数的范围与机器字长有关8位整数原码表示的范围为:1111111101111111-12712727-1-(27-1)8位整数反码表示的范围为:1000000001111111-12712727-18位整数补码表示的范围为:1000000001111111-12812727-1-27机器字长16位??最小:最大:最小:最大:最小:最大:-(27-1)12/54补充:无符号数所有位都是数值位,不存在符号位。即无符号数都是正的。所以也就没有原码、反码、补码的概念。8位无符号数可表示数的范围为:0000000011111111025528-1机器字长16位??最小:最大:-128是人为规定的。因为8位2进制中,存在“-0”(10000000)和0(00000000),虽然“-0”也是“0”,但根据正、反、补码体系,“-0”的补码和“+0”是不同的,这样就出现两个补码代表一个数值的情况。为了将补码与数字一一对应,所以人为规定“0”一律用“+0”代表。同时为了充分利用资源,就将原来本应该表示“-0”的补码规定为代表-128。14/54★原码、反码、补码的作用?原码:机器数反码:通常作为求补过程的中间形式,其他情况很少使用。补码:目前计算机中的加减法运算基本上都采用补码进行运算。加减法都可以用加法来实现,计算变得简单。即:[X+Y]补=[X]补+[Y]补[X﹣Y]补=[X+(﹣Y)]补=[X]补+[﹣Y]补15/54[例1.21]计算十进制数“39”与“56”之差(39)10﹣(56)10=[39]补+[﹣56]补[39]补=00100111[﹣56]补=1100100000100111+1100100011101111结果是否正确??-1716/54计算机中加减法运算统一化成补码的加法运算,符号位也参与运算。可以验证,任何一个数的反码的反码即是原码本身。补码的补码即是原码本身。计算机中,常对机器数采用原码、反码与补码表示。使用补码的优点是:(1)使得符号位能与有效数值部分一起参加运算,从而简化运算规则。(2)使减法运算转换为加法运算,简化计算机中运算器的线路设计。对于正数,其原码、反码与补码表示是一致的。对于负数,除符号位外,将其原码的数值部分求反(即0变1,1变0)则可求其反码,由反码的最低位加1即可求得其补码。假设字长为8位。二进制数01010101的原码、反码与补码表示均为01010101。而二进制数11010101的原码为11010101,其反码表示为10101010,其补码表示为10101011。
本文标题:2.5-原码、补码、反码
链接地址:https://www.777doc.com/doc-4275774 .html