计算机原理(原码、反码、补码)_第1页
计算机原理(原码、反码、补码)_第2页
计算机原理(原码、反码、补码)_第3页
计算机原理(原码、反码、补码)_第4页
计算机原理(原码、反码、补码)_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、计算机原理-整数的补码,原码,反码解释一:对于整数来讲其二进制表示没有符号位一个字节的表示范围为 00000000-11111111,由此可见一个字节的整数表示范围为 0,255=2人8 - 1。对于整数来讲, 其二进制表示中存在一个符号位 先来看一下下面几个定义:1:在计算机中,负数以其正值的补码形式表达。正数即在符号位补0.2:原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。3:反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。4:补码:反码+1由以上可以得到计算机储存有符号的整数时,是用该整数的补码进行储存的,0的原码、补码都是0 ;正数的原码、补码可以特殊理解为

2、相同;负数的补码是它的反码加1。范围:正数00000000 - 01111111 即0, 2A7 - 1。 负数10000000 - 11111111。范 围说明 11111111 - 1 = 11111110,取反=00000001 即是-1. 10000000 -1 = 01111111,取反 =10000000,即是-128.因此有一个有符号二进制表示范围是从 -128-127.解释二:大家都知道数据在计算机中都是按字节来储存了,1个字节等于8位(1Byte=8bit ),而计算机只能识别 0和1这两个数,所以根据排列,1个字节能代表256 种不同的信息,即2A8( 0和1两种可能,8位

3、排列),比如定义一个字节大小的无符号整数(unsigned char ),那么它能表示的是0255 (02人8 -1 )这些数,一共是 256个数,因为,前面说了,一个字节只能表示256种不同的信息。别停下,还是一个字节的无符号整数,我们来进一步剖析它,0是这些数中最小的一个,我们先假设它在计算机内部就用8位二进制表示为00000000 (从理论上来说也可以表示成其他不同的二进制码,只要这256个数每个数对应的二进制码都不相同就可以了),再假设1表示为00000001 , 2表示为00000010 , 3表示为00000011 ,依次类推,那么最大的那个数255在8位二进制中就表示为最大的数

4、11111111,然后,我们把这些二进制码换算成十进制看看,会发现刚好和我 们假设的数是相同的,而事实上,在计算机中,无符号的整数就是按这个原理来储存的,所 以告诉你一个无符号的整数的二进制码,你就可以知道这个数是多少,而且知道在计算机中,这个数本身就是以这个二进制码来储存的。无符号的整数根本就没有原码、反码和补码。只有有符号的整数才有原码、反码和补码的!其他的类型一概没有。虽然我们也可以用二进制中最小的数去对应最小的负数,最大的也相对应,但是那样不科学,下面来说说科学的方法。还是说一个字节的整数,不过这次是 有符号的啦,1个字节它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示

5、成范围:-128-127。它在计算机中是怎么储存的呢?可以这样理解,用最高位表示符号位,如果是0表示正数,如果是1表示负数,剩下的7位用来储存数的绝对值的话,能表示2A7个数的绝对值,再考虑正负两种情况,2A7*2还是256个数。首先定义0在计算机中储存为 00000000 ,对于正数我们依然可以像无符号数那样换算,从00000001到01111111依次表示1到127。那么这些数对应的二进制码就是这些数的原码。到这里很多人就会想,那负数是不是从10000001到11111111依次表示-1到-127,那你发现没有,如果这样的话那么一 共就只有255个数了,因为10000000的情况没有考虑在

6、内。实际上,10000000在计算机中表示最小的负整数,就是这里的-128,而且实际上并不是从10000001至U 11111111依次表示-1到-127,而是刚好相反的,从10000001到11111111依次表示-127到-1。负整数在计算机中是以补码形式储存的,补码是怎么样表示的呢,这里还要引入另一个概念 一一反码,所谓反码就是把负数的原码(负数的原码和和它的绝对值所对应的原码相同,简单的说就是绝对值相同的数原码相同)各个位按位取反,是1就换成0,是0就换成1,如-1的原码是 00000001 ,和1的原码相同,那么-1的反码就是11111110,而补码就是在反码的基础上加1,即-1的补

7、码是11111110+1=11111111,因此我们可以算出-1在计算机中是按 11111111储存的。总结一下,计算机储存有符号的整数时,是用该整数的补码进行储存的,0的原码、补码都是0,正数的原码、补码可以特殊理解为相同,负数的补码是它的反码加1。下面再多举几个例子,来帮助大家理解!例:47 101111 有符号的整数原码反码470010111111010000470010111111010000补码00101111 (正数补码和原码相同)11010001 (负数补码是在反码上加1)关于补码:补码用X 表示机器数(原码),X是真值(二进制)x = +0.1001,则X 原=0.1001x

8、= -0.1001,则x 原=1.1001对于0,原码中有“+0 -0”之分,故有两种形式:+0原=0.000.0-0原=1.000.0采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小, 然后大数减去小数,最后还要给结果选择符号。为了解决这些矛盾, 人们找到了补码表示法。机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。负数用补码表示时,可以把减法转化为加法。这样,在计算

9、机中实现起来就比较方便x 补= x1 x 02 + x= 2 | x |0x 1x = +0.1011,则x 补=0.1011x = -0.1011,则x 补=10+ x= 10.0000-0.1011= 1.0101对于 0, + 0补=0补=0.0000(mod 2)例子中是以定点小数为例。补码的原理可以用钟表来描述如设标准时间为4点正;一只表已经 7点了,为了校准时间,可以采用两种方法:一是将时针退 7-4=3 格;一是将时针向前拨12-3=9格。即7-3和7+9(mod12)等价,因此,把负数用补码表示的 mod2操作,可以把减法转化为加法。补码说明:1、在计算机系统中,数值一律用补码

10、来表示(存储)。主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍 弃。2、补码与原码的转换过程几乎是相同的。数值的补码表示也分两种情况:(1)正数的补码:与原码相同。例如,+9的补码是00001001。(2 )负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。例如,-7的补码:因为是负数,则符号位为 “1整个为10000111 ;其余7位为-7的绝 对值+7的原码0000111按位取反为1111000 ;再加1,所以-7的补码是11111001。已知一个数的补码,求原码的

11、操作分两种情况:(1) 如果补码的符号位为“ 0”表示是一个正数,所以补码就是该数的原码。(2) 如果补码的符号位为“1,”表示是一个负数,求原码的操作可以是:符号位为1 ,其余各位取反,然后再整个数加1。例如,已知一个补码为 11111001,则原码是10000111(-7):因为符号位为 “1,”表示是一个负数,所以该位不变,仍为 “1;”其余7位1111001取反后为0000110 ;再加 1,所以是 10000111。3、我在这里介绍一下 模”的概念:模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它 也有一个计量范围,即都存在一个模”。例如:时钟的计量范围是

12、011,模=12。表示n位的计算机计量范围是 02A(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都有这个特性。共同的特点是两者相加

13、等于模。对于计算机,其概念和方法完全一样。n位计算机,设n=8 ,所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又 回了 00000000,所以8位二进制系统的模为 2A8。在这样的系统中减法问题也可以 化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处 理上,就是补码。另外两个概念一的补码(ones complement)指的是正数=原码,负数=反码而二的补码(twos complement)指的就是通常所指的补码。4、这里补充补码的代数加减运算:(1)补码加法X+Y补=X补 + Y补【例 7 】X=+0110011,Y=-0101001 ,求X+Y补X补=00110011 Y补=11010111X+Y补=X补 + Y补=

温馨提示

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

评论

0/150

提交评论