版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.弟一篇数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在 日常生活中人们使用的是十进制正如亚里士多德早就指出的那样,今天十进制 的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结 果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚.”(摘 自 有空大家可以看看哦,很有意思的).为了能方便的与二进制 转换,就使用了十六进制(2 4)和八进制(23).下面进入正题.数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机 器数的原码了.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范 围为(-1
2、27-0 +0127)共 256 个.?有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的 原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下:假设字 长为8bits(1 )?10-? ( 1 )10?=? ( 1 )10?+ ( -1 )10?= ?( 0 )10(00000001)原?+ (10000001)原?= (10000010)原?= ( -2 )?显然不正确.?因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位 的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和 原码相同且一一对应.下面是反码的减法运算:?(
3、 1 )10?-? ( 1 )?10=? ( 1 )?10+ ( -1 )?10= ?( 0 )10?(00000001)?反 + (11111110)反?=? (11111111)反?=? ( -0 ) ?有问题.(1 )10?-? ( 2)10?=? ( 1 )10?+ ( -2 )10?= ?( -1 )10(00000001)?反 + (11111101)反?=? (11111110)反?=? ( -1 )?正确问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先 将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明 的贡献极大).于是就
4、引入了补码概念.负数的补码就是对反码加一,而正数不变,正数的原码反 码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为:(-1280127)共 256 个.注意:(-128)没有相对应的原码和反码,(-128) = (10000000) ?补码的加减运算如 下:(1 )?10-? ( 1 )?10=? ( 1 )10?+ ( -1 )10?= ?( 0 )10(00000001)补?+ (11111111)补?=? (00000000)补?= ( 0 )?正确(1 )?10-? ( 2)?10=? ( 1 )10?+ ( -2 )10?= ?( -1 )10(00000
5、001)?补 + (11111110)?补=? (11111111)补?= ( -1 ) ?正确?所以补码的设计目的是:?使符号位能与有效值部分一起参加运算,从而简化运算规则.使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计?所有这些转换都是在计算机的最底层进行的, 而在我们使用的汇编、C等其他 高级语言中使用的都是原码。看了上面这些大家应该对原码、反码、补码有了新 的认识了吧!.第二篇假设字长为8bits 要完成,1-1 =0(1 ) - ( 1 )(1 ) + ( -1 )(00000001)+ (10000001) 原码计算=(10000010)= ( -2 )(1 ) -
6、( 2 )(1 ) + ( -2 )(00000001)+ (10000010) 原码计算=(10000011)= ( -3 )显然结果不正确.II.因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码 反码的取值空间和原码相同且一一对应下面是反码的减法运算:(00000001)+ (11111110)-反码计算=(11111111)=(10000000)二(-0 )有问题按上面同样的方法计算1-2=-1(00000001)+ (11111101)-反码计算=(11111110)=(10000001 ) =(-1 )正确问题
7、出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分 的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大).于是就引入了补码概念.编辑本段负数的补码负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了 (-0),所以补码的表示范围为:(-1280127) 共256个.注意:(-128)也有相对应的原码和反码,它的反码是(11111111)原码仍然是(10000000) (-128)补码的加减运算如下:下面是补码的运算:(1 )- ( 1 )= ( 1 )+ ( -1 )=(00000001)补 +
8、 (11111111)补(反码加一)=(00000000)补=(0 ) 正确(1 )- ( 2)= ( 1 )+ ( -2 )=(00000001)补 + (11111110)补=(11111111)补=(-1 ) 正确(-1) = (10000001) 原码=(11111110 )反码=(11111110 )+ 1) 补码编辑本段设计目的所以补码的设计目的是:使符号位能与有效值部分一起参加运算,从而简化运算规则.使减法运算转换为加法运算,进一步简化计算机中运算器的线路设 计 所有这些转换都是在计算机的最底层进彳T的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。小数和分数的补码一、十
9、进制分数补码可以先将分子和分母分别表示成二进制数,然后 计算出二进制小数,再按下面第三步的方法将求出小数的补码形式。37/64=100101B/2A6=0.100101B-51/128=110011B/2A7=0.0110011B二、十进制小数的补码也应该先将其转换成二进制小数,再按下面第 三步的方法将求出小数的补码形式。0.375=0.011B0.5625=0.1001B三、将二进制小数对应的补码求出37/64补码=0.100101B补码=00100101B-51/128 补码=0.0110011B补码=11001101B0.375补码=0.011B补码=00110000B0.5625补码=
10、0.1001B补码=01001000B3.第三篇计算机中的原码、补码和反码数在计算机中是以二进制形式表示的。数分为有符号数和无符号数。原码、反码、补码都是有符号定点数的表示方法。一个有符号定点数的最高位为符号位,0是正,1是副。以下都以8位整数为例,原码就是这个数本身的二进制形式。例如0000001 就是 +11000001 就是-1正数的反码和补码都是和原码相同。负数的反码是将其原码除符号位之外的各位求反-3反=10000011 反=11111100负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。-3补=10000011 补=11111101一个数和它的补码是可逆的。为什么要设立
11、补码呢?第一是为了能让计算机执行减法:a-b补=a 补+ (-b )补第二个原因是为了统一正0和负0正零:00000000 负零:10000000 这两个数其实都是0,但他们的原码却有不同的表示。但是他们的补码是一样的,都是00000000特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)10000000=10000000反+1=11111111+1=(1)00000000=00000000(最高位溢出了,符号位变成了0)=00000000(最高位溢出了,符号位变成了0)有人会问10000000这个补码表示的哪个数的补码呢?其实这是一个规定,这个数表示的是-12
12、8所以n位补码能表示的范围是-2A(n-1)到 2A(n-1)-1比n位原码能表示的数多一个又例:1011原码:01011反码:01011 /补码:01011 /正数时,正数时,反码=原码1011原码:01011反码:01011 /补码:01011 /正数时,正数时,反码=原码补码=原码-1011原码:11011反码:10100 /补码:10101 /负数时,负数时,反码为原码取反补码为原码取反十原码:11011反码:10100 /补码:10101 /负数时,负数时,反码为原码取反补码为原码取反十0 . 1101原码:0.1101反码:0.1101 /正数时,反码=原码补码:0.1101 /原
13、码:0.1101反码:0.1101 /正数时,反码=原码补码:0.1101 /正数时,补码=原码-0 . 1101原码:1.1101反码:1.0010 /补码:1.0011 /负数时,负数时,反码为原码取反补码为原码取反十总结:“0表示正,“1”表示负,其余位表示数值的大小。“0表示正,“1”表示负,其余位表示数值的大小。所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。1、原码、反码和补码的表示方法(1) 原码:在数值前直接加一
14、符号位的表示法。例如:符号位 数值位+7原=00000111 B-7原=10000111B注意:a.数0的原码有两种形式:+0原=00000000B-0原=10000000Bb. 8位二进制原码的表示范围:-127+1272 )反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1:数值部分按位取反。例如:符号位 数值位+7反=00000111 B-7反=11111000 B注意:a.数0的反码也有两种形式,即+0反=00000000B-0反=11111111Bb. 8位二进制反码的表示范围:-127+1273)补码的表示方法)模的概念:把一个计量单位称之为模或模数。例如,时钟是以1
15、2进制进行计数循环的,即以 12为模。在时钟上,时针加上(正拨)12的整数位或减去(反拨)12的整数位,时针的位置不变。 14点钟在舍去模12后,成为(下午)2点钟(14=14-12=2)。从0点出发逆时针拨10格即减去10小时,也可看成从0点出发顺时针拨2格(加上2小时),即2点(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射为+2 o由此可见,对于一个模数为12的循环系统来说,加2和减10的效果是一样的;因此,在以 12为模的系统中,凡是减10的运算都可以用加2来代替,这就把减法问 题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10和2对*H 12而言互为补数。同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满 8位也就是256个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位二进制数,它的模数为2A8=256 o在计算中,两个互补的数称为补码”。2)补码的表示: 正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1;数值部分按位取反后再在末位(最低位)加 1 O也就是反码+1 ”。例如:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 改性聚苯板的施工方案(3篇)
- 普通铁路隧道施工方案(3篇)
- 海飞丝内容营销方案(3篇)
- 烟筒补强施工方案(3篇)
- 装修消防施工方案范本(3篇)
- 转移钢结构施工方案(3篇)
- 钢楼梯施工方案模板(3篇)
- 香味营销方案批发(3篇)
- 高考志愿填报-城市选择篇
- 2026一年级道德与法治下册 认真仔细不马虎
- 2026年一级建造师《建设工程项目管理》真题及答案
- 2026年政府采购评审专家测试卷【完整版】附答案详解
- 学校建筑屋顶分布式光伏发电示范项目设计方案
- 行业协会的职能作用和要处理好的几个关系
- 《经成人中心静脉通路装置采血技术规范(征求意见稿)》
- 内科学第六篇 第十四章 出血性疾病
- 《种植业农产品碳足迹核查技术规范(征求意见稿)》编制说明
- MOOC 中医基础理论-河南中医药大学 中国大学慕课答案
- 装饰装修工程施工组织设计完整版
- 左洛复心内科-解说词版
- 多唱魔镜ext4格式的母盘制作和权限修改方法
评论
0/150
提交评论