补码计算.doc_第1页
补码计算.doc_第2页
补码计算.doc_第3页
补码计算.doc_第4页
补码计算.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

补码 补码举例 补码(twos complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。 转自铁血社区 / 求给定数值的补码表示分以下两种情况: (1)正数的补码:与原码相同。 例1+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 例2求-7的补码。 因为给定数是负数,则符号位为“1”。 转自铁血社区 / 后七位:+7的原码(0000111)按位取反(1111000)加1(1111001) 所以-7的补码是11111001。 已知一个数的补码,求原码的操作分两种情况: (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。 (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。 例3已知一个补码为11111001,则原码是10000111(-7)。 转自铁血社区 / 因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。 其余七位1111001取反后为0000110; 再加1,所以是10000111。 在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模” 的概念: “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范 转自铁血社区 / 围,即都存在一个“模”。例如: 时钟的计量范围是011,模=12。 表示n位的计算机计量范围是02(n)-1,模=2(n)。 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的 余数。任何有模的计量器,均可化减法为加法运算。 例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 转自铁血社区 / 一种是倒拨4小时,即:10-4=6 另一种是顺拨8小时:10+8=12+6=6 在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。 对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特 性。共同的特点是两者相加等于模。 对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再 转自铁血社区 / 加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的 模为28。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以 了。把补数用到计算机对数的处理上,就是补码。 另外两个概念 一的补码(ones complement) 指的是正数=原码,负数=反码 而二的补码(twos complement) 指的就是通常所指的补码。 转自铁血社区 / 3.补码的绝对值(称为真值) 例4-65的补码是10111111 若直接将10111111转换成十进制,发现结果并不是-65,而是191。 事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。 若要得到一个负二进制数的绝对值(称为真值),只要各位(包括符号位)取反,再加1,就得到真值。 如:二进制值:10111111(-65的补码) 转自铁血社区 / 各位取反:01000000 加1:01000001(+65的补码) 这里补充补码的代数加减运算: 1、补码加法 X+Y补 = X补 + Y补 例5X=+0110011,Y=-0101001,求X+Y补 转自铁血社区 / X补=00110011 Y补=11010111 X+Y补 = X补 + Y补 = 00110011+11010111=00001010 注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是 100001010,而是00001010。 2、补码减法 X-Y补 = X补 - Y补 = X补 + -Y补 转自铁血社区 / 其中-Y补称为负补,求负补的方法是:所有位(包括符号位)按位取反;然后整个数加1。 例61+(-1) 十进制 1的原码00000001 转换成补码:00000001 -1的原码10000001 转换成补码:11111111 1+(-1)=0 00000001+111111111=00000000 转自铁血社区 / 00000000转换成十进制为0 0=0所以运算正确。 这里补充补码的代数解释: 任何一个数都可以表示为-a=2(n-1)-2(n-1)-a; 这个假设a为正数,那么-a就是负数。而根据二进制转十进制数的方法,我们可以把a表示为:a=k0*20+k1*21+k2*22+k(n-2)*2(n-2) 这里k0,k1,k2,k(n-2)是1或者0,而且这里设a的二进制位数为n位,即其模为2(n-1),而2(n-1)其二项展开是:1+20+21+22+2(n-2),而式子:-a=2(n-1)-2(n-1)-a中,2(n-1)-a代入a=k0*20+k1*21+k2*22+k(n-2)*2(n-2)和2(n-1)=1+20+21+22+2(n-2)两式,2(n-1)-a(1-k(n-2)*2(n-2)+(1-k(n-3)*2(n-3)+(1-k2)*22+(1-k1)*21+(1-k0)*20+1,而这步转化正是取反再加1的规则的代数原理所在。因为这里k0,k1,k2,k3不是0就是1,所以1k0,1-k1,1-k2的运算就是二进制下的取反,而为什么要加1,追溯起来就是2(n-1)的二项展开式最后还有一项1的缘故。而-a=2(n-1)-2(n-1)-a中,还有-2(n-1)这项未解释,这项就是补码里首位的1,首位1在转化为十进制时要乘上2(n-1),这正是n位二进制的模。 转自铁血社区 / 不能贴公式,所以看起来很麻烦,如果写成代数式子看起来是很方便的。 注:n位二进制,最高位为符号位,因此表示的数值范围-2(n-1) 2(n-1) -1,所以模为2(n-1)。上面提到的8位二进制模为28是因为最高位非符号位,表示的数值范围为028-1。 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作x原。 转自铁血社区 / 例如,X1= 1010110 X2= 一1001010 其原码记作: X1原=1010110原=01010110 X2原=1001010原=11001010 原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围: 转自铁血社区 / 最大值为0.1111111,其真值约为(0.99)10 最小值为1.1111111,其真值约为(一0.99)10 当用8位二进制来表示整数原码时,其表示范围: 最大值为01111111,其真值为(127)10 最小值为11111111,其真值为(127)10 在原码表示法中,对0有两种表示形式: 转自铁血社区 / +0原=00000000 0 原=10000000 (2)补码表示法 机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作X补。 例如,X1=1010110 X2= 一1001010 转自铁血社区 / X1原=01010110 X1补=01010110 即 X1原=X1补=01010110 X2 原= 11001010 X2 补=10110101110110110 补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围: 转自铁血社区 / 最大为0.1111111,其真值为(0.99)10 最小为1.0000000,其真值为(一1)10 采用8位二进制表示时,整数补码的表示范围: 最大为01111111,其真值为(127)10 最小为10000000,其真值为(一128)10 在补码表示法中,0只有一种表示形式: 转自铁血社区 / 0补=00000000 0补=111111111=00000000(由于受设备字长的限制,最后的进位丢失) 所以有0补=0补=00000000 (3)反码表示法 机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作X反。 例如:X1= 1010110 转自铁血社区 / X2= 一1001010 X1原=01010110 X1反=X1原=01010110 X2原=11001010 X2反=10110101 反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。 转自铁血社区 / 例1. 已知X原=10011010,求X补。 分析如下: 由X原求X补的原则是:若机器数为正数,则X原=X补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有X补=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论