版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基本概念 在计算机内部表示二进制数的方法称为数值编码,把一个数及其符号在机器中的表示加以数值化,称为机器数。机器数所代表的数称为数的真值。 表示一个机器数,应考虑以下三个因素: 1机器数的范围 字长为8位,无符号整数的最大值是(11111111)B=(255)D,此时机器数的范围是0255。 字长为16位,无符号整数的最大值是 2机器数的符号 在算术运算中,数据是有正有负的,将这类数据称为带符号数。 为了在计算机中正确地表示带符号数,通常规定每个字长的最高位为符号位,并用0表示正数,用1表示负数。 3机器数中小数点的位置 在机器中,小数点的位置通常有两种约定: 一种规定小数点的位置固定不变,这
2、时的机器数称为“定点数”。 另一种规定小数点的位置可以浮动,这时的机器数称为“浮点数”。 4原码 正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。 【例1】当机器字长为8位二进制数时: X1011011 X原码01011011 Y1011011 Y原码11011011 1原码00000001 1原码10000001 127原码01111111 127原码11111111 原码表示的整数范围是: (2n-11)(2n-11),其中n为机器字长。 则:8位二进制原码表示的整数范围是127127 16位二进制原码表示的整数范围是32767
3、32767 5反码 对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。【例2.14】当机器字长为8位二进制数时: X1011011 X原码01011011 X反码01011011 Y1011011 Y原码11011011 Y反码10100100 1反码00000001 1反码11111110 127反码01111111 127反码10000000 负数的反码与负数的原码有很大的区别,反码通常用作求补码过程中的中间形式。 反码表示的整数范围与原码相同。 6补码 正数的补码与其原码相同,负数的补码为其反码在最低位加1。 【例2】(1)X1011011 (
4、2) Y1011011 (1)根据定义有: X原码01011011 X补码01011011 (2) 根据定义有: Y原码11011011 Y反码10100100 Y补码10100101 补码表示的整数范围是2n-1(2n-11),其中n为机器字长。 则:8位二进制补码表示的整数范围是128127 16位二进制补码表示的整数范围是3276832767 当运算结果超出这个范围时,就不能正确表示数了,此时称为溢出。 7补码与真值之间的转换 正数补码的真值等于补码的本身;负数补码转换为其真值时,将负数补码按位求反,末位加1,即可得到该负数补码对应的真值的绝对值。 【例3】X补码01011001B,X补
5、码11011001B,分别求其真值X。 (1)X补码代表的数是正数,其真值: X1011001B (1×261×241×231×20) (641681) (89)D (2)X补码代表的数是负数,则真值: X(1011001求反1)B (01001101)B (0100111)B (1×251×221×211×20) (32421) (39)D 数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过
6、我们绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚."(摘自<<数学发展史>>有空大家可以看看哦,很有意思的).为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制(23).下面进入正题. (-127-0 +0127)共256个. 有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设字长为8bits ( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )1
7、0 (00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 显然不正确. 因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应. 下面是反码的减法运算: ( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10 (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有问题. ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )
8、10 (00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正确 问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大). 于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为: (-1280127)共256个. 注意:(-128)没有相对应的原码和反码, (-128) = (10000000) 补码的加减运算如下: ( 1 ) 10- ( 1 )
9、 10= ( 1 )10 + ( -1 )10 = ( 0 )10 (00000001)补 + (11111111)补 = (00000000)补 = ( 0 ) 正确 ( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10 (00000001) 补+ (11111110) 补= (11111111)补 = ( -1 ) 正确 所以补码的设计目的是: 使符号位能与有效值部分一起参加运算,从而简化运算规则. 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计 所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都
10、是原码。 原码就是这个数本身的二进制形式。 例如0000001 就是+11000001 就是-1 正数的反码和补码都是和原码相同。 负数的反码是将其原码除符号位之外的各位求反 -3反=10000011反=11111100 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。 -3补=10000011补=11111101 一个数和它的补码是可逆的。 为什么要设立补码呢? 第一是为了能让计算机执行减法: a-b补=a补+(-b)补 第二个原因是为了统一正0和负0 正零:00000000 负零:10000000 这两个数其实都是0,但他们的原码却有不同的表示。 但是他们的补码是一样的,都是0
11、0000000 特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!) 10000000补 =10000000反+1 =11111111+1 =(1)00000000 =00000000(最高位溢出了,符号位变成了0) 有人会问 10000000这个补码表示的哪个数的补码呢? 其实这是一个规定,这个数表示的是-128 所以n位补码能表示的范围是 -2(n-1)到2(n-1)-1 比n位原码能表示的数多一个又例:1011 原码:01011 反码:01011 /正数时,反码原码 补码:01011 /正数时,补码原码 -1011 原码:11011 反码:10100 /负数
12、时,反码为原码取反 补码:10101 /负数时,补码为原码取反1 01101 原码:0.1101 反码:0.1101 /正数时,反码原码 补码:0.1101 /正数时,补码原码 -01101 原码:1.1101 反码:1.0010 /负数时,反码为原码取反 补码:1.0011 /负数时,补码为原码取反1 总结:在计算机内,定点数有3种表示法:原码、反码和补码所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数
13、的补码是在其反码的末位加1。1、原码、反码和补码的表示方法(1) 原码:在数值前直接加一符号位的表示法。例如: 符号位 数值位+7原= 0 0000111 B-7原= 1 0000111 B 注意:a. 数0的原码有两种形式: +0原=00000000B -0原=10000000B b. 8位二进制原码的表示范围:-127+1272)反码: 正数:正数的反码与原码相同。 负数:负数的反码,符号位为“1”,数值部分按位取反。例如: 符号位 数值位 +7反= 0 0000111 B -7反= 1 1111000 B注意:a. 数0的反码也有两种形式,即 +0反=00000000B - 0反=111
14、11111B b. 8位二进制反码的表示范围:-127+1273)补码的表示方法1)模的概念:把一个计量单位称之为模或模数。例如,时钟是以12进制进行计数循环的,即以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。由此可见,对于一个模数为12的循环系统来说,加2和减10的效果是一样的;因此,在以12为模的系统中
15、,凡是减10的运算都可以用加2来代替,这就把减法问题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10和2对模12而言互为补数。同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8位也就是256个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位二进制数,它的模数为28=256。在计算中,两个互补的数称为“补码”。2)补码的表示: 正数:正数的补码和原码相同。 负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。例如: 符号位 数值位 +7补= 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020年中考历史全程复习课件知识3秦汉时期统一多民族国家的建立和巩固
- 事故应急演练的策划与实施考核试卷
- 森林资源价值与生态补偿机制考核试卷
- 天然气在城市规划与建设中的应用考核试卷
- 煤炭行业的市场竞争与价格趋势考核试卷
- DB11T 809-2011 典当经营场所安全防范技术要求
- 小熊出游课件教学课件
- 雪国课件教学课件
- 兰花培训课件
- 美术职业课件教学课件
- 英语漫谈胶东海洋文化知到章节答案智慧树2023年威海海洋职业学院
- 环保产品管理规范
- 中医确有专长综述范文(5篇)
- 非小细胞肺癌NCCN指南解读
- EBO管理体系与案例分享
- 拦砂坝施工设计方案
- GB/T 20934-2016钢拉杆
- 教研课平行四边形和梯形的复习ppt
- S曲线和技术进化法则TRIZ专题培训课件
- 铜矿普查简报铜矿
- 消防设施定期检查、检测、维修保养记录
评论
0/150
提交评论