三种机器码的联系与理解

来源 :大学教育 | 被引量 : 0次 | 上传用户:asd010asd
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要]为了对数据进行处理,首先要把数据表示出来,计算机中采用机器码表示数值型数据。首先从原码出发,分析了计算过程中出现的问题,引出补码,并深入剖析了补码的定义。在计算补码的过程中又引出反码。清晰地展示了三种机器码之间的内在关系,对机器码概念的理解有一定的帮助。
  [关键词]原码 补码 反码 模
  [中图分类号] G623.58  [文献标识码] A  [文章编号] 2095-3437(2012)05-0127-02
  一、引言
  计算机可以看做是一个数据处理机,这里的数据含义很广,既包括数值型数据,也包括诸如汉字、图形、符号、声音等等非数值型的数据,既然要对这些数据进行处理,那么,首先,必须要把这些数据表示出来。这里介绍数值型数据在计算机当中的表示方法,也称为机器码。
  二、三种机器码
  说到数值型数据,我们自然会想到,有正数和负数之分,比如:+1001, -1100,既然计算机采用的是二进制,
  也就是只有0和1两种状态,那么,正号和负号在计算机当中如何来表示呢?很显然,有两种解决的方法,第一:用0表示正数,我们把+1001可写为01001,用1来表示负数,把-1100可写为11100。第二种方法:用1来表示正号而用0来表示负号。当把符号用0和1表示出来之后,也称为把符号数字化之后,还有一个问题,如果要进行加、减、乘除等等运算,那么符号位是否参与运算?如果参与运算,会有什么样的结果?为了能够妥善的解决这一系列的问题,就产生了把符号位和数值位一起编码的很多种表示方法,分别为:原码、补码、反码和移码。
  同时,为了能够区别我们平常书写的带有正负号的数和符号数字化的数,我们把前者(即带有正负号的数)称为真值,用x表示;后者(符号数字化之后的数)称为机器码,用[x]原来表示(或[x]补,[x]反)。为方便描述,下面我们仅以整数为例。
  (一)原码
  整数原码的定义如下:
  [x]原=0,x  2n>x≥02n+x   0≥x>-2n   (1)
  其中,x为真值,n为整数的位数。
  原码是非常简单的一种编码方法,它由两部分构成,符号位和数值位。如果是正数,符号位用0来表示,如果是负数,符号位用1来表示;数值部分均为真值x的绝对值。
  定义的理解:观察公式(1),正数原码的定义很好理解;负数原码的定义如何理解呢?不难发现,2n用二进制来表示,其形式为:
  在此基础上,加上n位数的绝对值即得原码,这与上面的描述(符号位用1来表示,数值部分是真值x的绝对值)相吻合。
  原码虽然简单直观,但用原码做加法时,会出现如下问题:
  从表1中可以看出,如果一个正数和一个负数做加法,事实上,我们会比较这2个数绝对值的大小,然后用绝对值大的数减去绝对值小的数,符号选择绝对值大的数的符号。也就是说,实际上,我们做的是减法运算。那么,能否只做加法运算呢,如果可以把减法运算都化为加法运算,只设计加法器就足够了。回答是肯定的,这要借助补码来实现。
  (二)补码
  介绍补码之前,必须先介绍模的概念。
  什么是模呢?可以把模理解为一个容器的容量。比如:我们最常见到的时钟,它的容量是12,其模也就是12。利用模的概念可以帮助我们理解很多实际问题。
  比如:时钟的时针目前指向6点的位置,要使其指向3点,共有2种方法,顺时针拨9格(+9),或逆时针拨3格(-3)。这里,+9和-3具有同样的实际意义。顺时针我们做的是加法运算:6+9=15,因为时钟的模是12,达到模的部分会自动丢失,也就是15-12=3,即3点。逆时针我们做的是减法运算:6-3=3。不难看出,在这个例子当中,-3和+9是完全等价的。负数-3用正数+9可以代替,这样就可以化减法运算为加法运算了。这里,+9就是-3的补码(模为12的情况下)。
  通过刚才的实例,得出一个结论:如果运算是有模的运算,负数用它的补码代替,就可以划减为加。那么如何求得其补码呢?通过观察发现:负数加上模即可得到补码。
  在计算机中,如果能够效仿这种方法,同样可以化减为加。那么计算机当中的运算是有模的运算吗?是。因为在计算机中,数据是放在寄存器当中的,而寄存器的位数是固定的。例如:1个4位二进制计数器,当计数器从0变到15之后,再加1,计数器又变为0,也就是说这个计数器的容量是16,其模为2n=16。同理,n+1位的寄存器,模为2n+1。那么,n位的整数,计算其补码时,模是多少呢?为了在以后的运算过程中,符号位也能参与运算,我们连同符号位考虑在内,也就是说,n位的整数,放在n+1位的寄存器当中,模应该选择2n+1,如表2所示:
  这样,得出补码的定义如下:
  [x]补=0,x  2n>x≥02n+1+x  0>x>-2n(mod2n+1)   (2)
  其中,x为真值,n为整数的位数
  注:正数的补码就是其原码,因为在运算过程中,它不需要被替换。
  下面,举例说明负数补码的计算。
  例:x=-1010
  引入补码的目的是为了化减为加,可是,在计算补码的过程中,又出现了减法运算,我们改进一下计算补码的过程:
  通过观察发现:这两个数符号位相同,数值位相反,这就是“原码”与“反码”的关系,由此可见,为了更加便捷地计算补码,引入了“反码”。那“反码”如何定义呢?很明显,反码加1得到补码,补码减1就是反码了。
  (三)反码
  为了更方便地计算负数的补码,引入了“反码”,其定义为:
  [x]反=0,x  2n>x≥0(2n+1-1)+x  0≥x>-2n(mod2n+1-1)   (3)
  其中,x为真值,n为整数的位数
  四、总结
  详细介绍了3种机器码的表示方法:从原码的定义出发,分析了原码做加减法存在的问题,引出补码,并对补码的定义进行了深入的分析。为了简化补码的计算引出反码。清晰地展示了三种编码之间的关系。
  [ 参 考 文 献 ]
  [1] 唐朔飞.计算机组成原理(第2版)[M].北京:高等教育出版社,2008.
  [2] 白中英.计算机组成原理(第四版)[M].北京:科学出版社,2008.
  [3] 王诚. 计算机组成原理(第3版)[M].北京:清华大学出版社,2004.
  [4] 蒋本珊. 计算机组成原理(第2版)[M].北京:清华大学出版社,2008.
  [责任编辑:左 芸]
其他文献
目的建立卫生监督机构现场快速检测能力评估指标体系。方法运用Delphi法进行两轮专家函询,以及小组讨论法确定指标体系。结果建立了一套包括18个指标的《卫生监督现场快速检测
【摘要】:本文分析了当前存在于原国有企业改制后形成的股份公司内部财务监督现状,提出了解决的措施。    国有企业改制阶段已大体完成,各种先进的制度和管理方法被普遍应用,给人一种焕然一新的感觉。然而,是否真的万事无忧了呢?远非如此,改制后国有企业的内部监督尤其是财务监督方面,还存在许多不足,还需要进一步完善。    改制后国有企业内部监督现状    国有企业在我国国民经济中占举足轻重的地位,在私营企
深入研究已知APT攻击事件,以威胁情报共享理论为基础,提出一种APT样本逻辑表达式生成算法IOCG。该算法能够自动生成可机读的IOCs,解决现有IOC的逻辑关系固定,逻辑项个数不变,
在湖南,说到图文快印,就不能不提长沙新日图文快印有限公司。该公司从事数码印刷多年,是湖南最早从事数码快印的企业之一。它拥有专业的设计团队,擅长为客户量身定制富有创新
"十五"期间,教育部从全国着眼提出要"继续加快高等职业技术教育的发展并进一步办出特色".从陕西省的实际情况看,认真落实教育部的这一计划目标,对于调整陕西省高教结构、促进
本文论述了影响建筑结构稳定性的因素,以及进行建筑结构加工的主要工作内容和加固的意义,之后对进行建筑结构加固时一些常用的技术进行了探讨,使读者能够对建筑结构加固技术