真值原码反码补码详解和习题_第1页
真值原码反码补码详解和习题_第2页
真值原码反码补码详解和习题_第3页
真值原码反码补码详解和习题_第4页
真值原码反码补码详解和习题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、原码、反码和补码的概念本节要求掌握原码、反码、补码的概念知识精讲数值型数据的表示按小数点的处理可分为定点数和浮点数;按符号位有原码、反码和补码三种形式的机器数。一计算机中数据的表示方法1、数的定点与浮点表示在计算机内部,通常用两种方法来表示带小数点的数,即所谓的定点数和浮点数。 定点数:是小数点在数中的位置是固定不变的数,数的最高位为符号位,小数点可在符号位之后,也可在数的末尾,小数点本身不需要表示出来,它是隐含的。 缺点:只有纯小数或整数才能用定点数表示; 浮点数:小数点在数中的位置是浮动的、不固定的数。一般浮点数既有整数部分又有小数部分,通常对于任何一个二进行制数,总可以表示成: 

2、7;P×S 、均为二进制数,为的阶码,一般为定点整数,常用补码表示,阶码指明小数点在数据中的位置,它决定浮点的表示范围为N的尾数,一般为定点小数,常用补码或原码表示,尾数部分给出了浮点数的有效数字位数,它决定了浮点数的精度,且规格化浮点数0.5|S|<;0.1B=( 1/2 )D =( 2-1 )D0.11B=(1/2 + 1/4 )D =( 2-1 + 2-2 )D0.111B=(1/2 + 1/4 + 1/8 )D =( 2-1 + 2-2 + 2-3)D -在计算机中表示一个浮点数其结构为: 阶码部分 尾数部分阶符阶数尾符尾数EfE1E2EmSfS1S2Sn假设用八个二进

3、制位来表示一个浮点数,且阶码部分占4位,其中阶符占一位;尾数部分占4位,尾符也占一位。若现有一个二进制数N(101100)2可表示为:110×0.1011,则该数在机器内的表示形式为:101100B= 10110B * (21)D101100B= 1011B * (22)D101100B= 101.1B * (23)D101100B= 10.11B * (24)D101100B= 1.011B * (25)D101100B= 0.1011B * (26)D=0.1011B * (2110)B011001101一个浮点形式的尾数S若满足0.5|S|1,且尾数的最高位数为1,无无效的0,

4、则该浮点数称为规格化数;规格化数可以提高运算的精度。 S为原码表示,则 S=1规格化数 S为补码表示 N为正数,则S1 N为负数,则S1 二、原码、反码和补码1、机器数与真值机器数:在计算机中数据和符号全部数字化,最高位为符号位,且用0表示正、1表示负,那么把包括符号在内的一个二进制数我们称为机器数,机器数: 有原码、反码和补码三种表示方法。比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和

5、0;10000011 就是机器数。真值:用“+”、“”号表示的二进制数。机器数因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 =  +000 0001 = +1, 1000 0001的真值 =  -000

6、0;0001 = -1 2、原码、反码和补码的概念1)概念机器数: 有原码、反码和补码三种表示方法。原码:是最简单的机器数表示法。其数符位用0表示正,1表示负,其余各位表示真值本身。 即用第一位表示符号, 其余位表示值,比如如果是8位二进制: 1的原码是00000001, 1的原码是10000001。反码:正数的反码同原码, 负数的反码为除符号位外,其它各位按位取反。 正数的反码是其本身, 负数的反码是在其原码的基础上,符号位不变,其余各个位取反 1的反码是00000001, 1的反码是11111110。补码:正数的补码同原码,负数的补码为反码加1。 负数的补码是

7、在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 1的补码是00000001, 1的补码是11111110。2)转换方法当真值为正数时,原码、反码、补码 3种机器数的最高位均为0当真值为负数时,原码、反码、补码 3种机器数的最高位均为1机器数的最高位为符号位,其它位称为数值位。当真值为正数时,原码=反码=补码;当真值为负数时,三种机器数的符号位相同,均为1,原码的数值位保持“原”样,反码的数值位是原码数值位的“按位取反”,补码的数值位是原码的数值位的“按位取反”后再加1,简称“取反加1”。当真值为负数时:补码 = 反码+1当真值为负数时:原码 = 补码取

8、补 补码 = 原码取补 -x补=模 - x补 x补=模 - -x补 比如8bit,模= 28=1_0000_0000 例如:(1)假设码长为8位,写出下列数的原码、反码和补码。根据本题可得到结论:0的原码、反码各有两种表示方法,而补码是唯一的全0表示。真值+0-0+1-1+127-127-128原码000000001000000000000001100000010111111111111111溢出反码000000001111111100000001111111100111111110000000溢出补码0000000000000000000000011111111101111111100000

9、0110000000 (2)假设码长为8位,写出原码、反码和补码所能表示定点整数和定点小数的范围。二进制定点整数十进制定点整数n位可表示的个数二进制定点小数十进制定点小数原码1111111101111111-127+1272n-1个1.11111110.1111111-127/128+127/128反码1000000001111111-127+1272n-1个1.11111110.1111111-127/128+127/128补码1000000001111111-128+127(-128)代替了(-0)2n个1.11111110.1111111-1-127/128由此可见:n位的二进制数用原码

10、表示,则可表示的数的个数为2n-1个;n位的二进制数用反码表示,则可表示的数的个数为2n1个;n位的二进制数用补码表示,则可表示的数的个数为n个。比如:补码中用(-128)代替了(-0)编程中常用到的32位int类型,可以表示范围是: -231 231 -1 因为第一位表示的是符号位.而使用补码表示时又可以多保存一个最小值 -2G 2G -13、算术运算计算机中的算术运算一般可采用补码进行,用补码表示的两个操作数进行算术运算,符号位可直接参加运算,结果仍为补码。定点补码加法运算运算规则:x+y补x取补y补定点补码减法运算运算规则:xy补x+(-y)补x补y补y补的求法是将y

11、补的各位(包括符号位)全取反,最末位加。即将y补连同符号位一起取反加1便可得到y补。 -x补=模 - x补 x补=模 - -x补 比如8bit,模= 28如:y补=10001010,则y补=01110110; -1补=28 - 1补=1_0000_0000 - 0000_0001 = 1111_1111y补=0100,则y补=1100; -(-1)补=28 - -1补=1_0000_0000 - 1111_1111 = 0000_0001 注意:在进行运算时有时会发生溢出。 定点补码运算的溢出处理采用补码运算时若结果的数值超出了补码所能表示的范围,则此种情况称为溢出。若计算结果比能表示的最大数

12、还大则称为上溢,上溢时一般作溢出中断处理;若计算结果比能表示的最小数还小则称为下溢,下溢时一般作机器零处理。下面介绍用双符号判断溢出方法:引入两个符号位Cs+1、CsCs+1用来表示两个符号位向更高位进位时的状态,有进位时Cs+1=1,无进位时Cs+1=0;Cs用来表示两数值的最高位向符号位进位时的状态,有进位时Cs=1,无进位时Cs=0;当Cs+1Cs=00或11时,无溢出;当Cs+1Cs=01或10时,有溢出,当双符号位为01时正溢出,当双符号位为10时负溢出;例如:x补=10011100,y 补=10011000,则x+y补= 。溢出,因为Cs+1Cs=10。故溢出逻辑表达式为VCs+1

13、Cs无符号数的运算无符号数的运算实际上是指参加运算的操作数X、Y均为正数,且整个字长全部用于表示数值部分。当两个无符号数相加时,其值在字长表示的范围内,其结果为正数。当两个无符号数相减时,其值的符号位取决于两数绝对值的大小。另外,地址在计算机中用无符号数表示。四原码, 反码, 补码再深入 计算机巧妙地把符号位参与运算, 并且将减法变成了加法, 背后蕴含了怎样的数学原理呢?将钟表想象成是一个1位的12进制数. 如果当前时间是6点, 我希望将时间设置成4点, 我们可以: 1. 往回拨2个小时:

14、60;6 - 2 = 4 2. 往前拨10个小时: (6 + 10) mod 12 = 4 3. 往前拨10+12=22个小时: (6+22) mod 12 =4 2,3方法中的mod是指取模操作, 16 mod 12 =4 即用16除以12后的余数是4. 所以钟表往回拨(减法)的结果可以用往前拨(加法)替代! 现在的焦点就落在

15、了如何用一个正数, 来替代一个负数. 上面的例子我们能感觉出来一些端倪, 发现一些规律. 但是数学是严谨的. 不能靠感觉. 首先介绍一个数学中相关的概念: 同余“模”是指一个计量系统的计数范围例如:时钟的计量范围是011,模=12。表示n位的计算机计量范围是02n -1,模=2n“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。比如:时钟(模=12)中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替对时钟(模=12)而言,8和4

16、互为补数。以12模的系统中,11和1;10和2;9和3;7和5;6和6都互为补数。共同的特点是两者相加等于模对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位)但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为28。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。-x补=模 - x补 x补=模 - -x补 比如8bit,模= 28 -1补=28 - 1补=1_0000_0000 - 0000_0001 = 1111_1111 -(-1)补=28 - -1补

17、=1_0000_0000 - 1111_1111 = 0000_0001 把补数用到计算机对数的处理上,就是补码。负数取模x mod y = x - y*int( x / y ) int( x / y ) VB语法表示:不大于(x/y)的最大整数,即向下取整 int(-1.5)=-2 Fix(-1.5)=-1举例: -3 mod 2 = -3 - 2*int(-3/2) =&#

18、160;-3 - 2*(-2) = -3 - 2x(-2)=1同余的概念两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余记作 a  b (mod m) 读作 a 与 b 对于模 m 同余举例说明: 4 mod 12 = 4 ; 16 mod 12 = 4 ; 28 mod

19、60;12 = 4 所以4, 16, 28对于模 12 同余.两个定理: 1、反身性: a  a (mod m) 自己和自己 对于模m同余2、 线性运算定理:如果a b (mod m),c d (mod m) 那么: (1) a ± c  b ± d (mod m)(2) a * c  b * d (mod&

20、#160;m) 3、 传递性:若ab (mod m),bc (mod m),则ac (mod m)典型例题一、 选择题1、一个四位二进制补码的表示范围是( )A、015 B、-87 C、-77 D、-782、(10题)十进制数-48用补码表示为( ) A、10110000 B、11010000 C、11110000 D、11001111分析:求某个负数的补码,可利用模的定义,所以求-48的补码,只需求-80的原码即可,因为-48+(-80)=-128,而-80原=11010000,故选B,注,传统做法是在原码的基础上“取反加1”。答案:B3、(09年镇江三模)如果X为负数,由x补求-

21、x补是将( )A、x补各值保持不变 B、x补符号位变反,其他各位不变C、x补除符号位外,各位变反,末位加1 D、x补连同符号位一起各位变反,末位加1分析:不论X是正数还是负数,由X补求-X补的方法是对X补求补,即连同符号位一起按位取反,末位加。答案:D二、 判断题1计算机中一个浮点数N可用±P×S表示,那么用规格化数表示,则尾数S必须满足0.5|S|1。【答案】对【解题指导】一个浮点形式的尾数S若满足0.5|S|1,且尾数的最高位数为1,无无效的0,则该浮点数称为规格化数;规格化数可以提高运算的精度。三、 填空题1二进制数.011011的规格化数为,二进制数11011的规格

22、化数为。(尾数、阶码均用8位二进制补码表示)分析:.011011可表示为.11011×2-1,即规格化数为.11011×2-1 11011可表示为.11011×25,即规格化数为.11011×21012、已知X、Y为两个有符号数的定点整数,它们的补码为:x补=00010011B,y补=11111001B,则X+Y补 B。分析:X+Y补X补Y补,X为正数,Y为负数,故列式结果不溢出为00001100。答案:00001100原码、反码和补码的概念当堂练习一、选择题( )1、机器数80H所表示的真值是-128,则该机器数为 形式的表示。A、原码 B、反码 C、

23、补码 D、移码( )2、在浮点数中,阶码、尾数的表示格式是 。 A、阶码定点整数,尾数定点小数 B、阶码定点整数,尾数定点整数C、阶码定点小数,尾数定点整数 D、阶码定点小数,尾数定点小数( )3、已知x补=10110111,y补=01001010,则xy补的结果是 。 A、溢出 B、01101010 C、01001010 D、11001010( )4、某机字长8位,含一位数符,采用原码表示,则定点小数所能表示的非零最小正数为 。 A、2-9 B、2-8 C、-1 D、2-7( )5、(08年)下列数中最小的数是_C_。A10010101原B10010101反C10010101补D100101

24、012( )6、(12年)8位补码表示的定点整数的范围是 B 。 A、-128+128 B、-128+127 C、-127+128 D、-127+127( )7、(11年盐城二模)已知X的补码为10110100,Y的补码为01101010,则X-Y的补码为 。A) 01101010 B) 01001010 C) 11001010 D) 溢出( )8、将-33以单符号位补码形式存入8位寄存器中,寄存器中的内容为( )。ADFH BA1H C5FH DDEH( )9、在机器数的三种表示形式中,符号位可以和数值位一起参加运算的是( )A)原码 B)补码 C)反码 D)反码、补码二、判断题( )1、1

25、6位的补码表示的定点整数的最小值是-32768。( )2、(10年南京二模)一个数在计算机中分别用原码、反码、补码表示时一定各不相同。( )3、(10年常州三模)字长相同,定点法表示数的范围比浮点法小。( )4若用八位二进制数来表示一个有符号数,则原码、反码和补码表示的数的个数与范围均相同。三、填空题1、十进制数-27对应的8位二进制补码为 。2、(11年)已知X、Y为两个带符号的定点整数,它们的补码为:X补=00010011B,Y补=11111001B,则X+Y补 = 00001100 B。3、数x的真值为-0.1011B,其原码表示为 ,补码表示为 。4、八位定点整数,采用二进制补码表示时

26、,所能表示真值的十进制数的范围是 。 5、(09年)已知X补=01110111B,Y补=01100010B,则X-Y 补=_00010101_。6、(11年)一个含有6个“1”、2个“0”的八位二进制整数原码,可表示的最大数为 7EH 。(用十六进制表示)7、(12年)已知X补=10000000B,则X= -10000000 B。8、(10年盐城二模)二进制数10110000,若看成纯小数,且为补码,则其对应真值的十进制数是_。原码、反码和补码的概念课后练习一、选择题( )1、(10年盐城二模)“溢出”一般是指计算机在运算过程是产生的 _ 。A、数据量超过内存容量 B、文件个数超过磁盘目录区规定的范围C、数据超过了机器的位所能表示的范围 D、数据超过了变量的表示范围( )2、设有二进制数X=-1101110,若采用8位二进制数表示,则X补的结果是 。 A、11101101 B、10010011 C、00010011 D、10010010 。 A、-55510 B、-23368 C、-18762 D、5

温馨提示

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

评论

0/150

提交评论