版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,.基本概念在计算机内部表示二进制数的方法称为数值编码,把一个数及其符号在机器中的表示加以数值化,称为机器数。机器数所代表的数称为数的真值。表示一个机器数,应考虑以下三个因素:1 机器数的范围字长为 8 位,无符号整数的最大值是(11111111 ) b= ( 255 )d ,此时机器数的范围是0255 。字长为 16 位,无符号整数的最大值是( 1111111111111111)b=( ffff )h=( 65535 )d此时机器数的范围是065535 。2 机器数的符号在算术运算中,数据是有正有负的,将这类数据称为带符号数。为了在计算机中正确地表示带符号数,通常规定每个字长的最高位为符号位
2、,并用0 表示正数,用1 表示负数。3 机器数中小数点的位置在机器中,小数点的位置通常有两种约定:一种规定小数点的位置固定不变,这时的机器数称为“定点数 ”。另一种规定小数点的位置可以浮动,这时的机器数称为“浮点数 ”。4 原码正数的符号位为 0,负数的符号位为 1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。【例 1 】当机器字长为8 位二进制数时:x 1011011x 原码 01011011y 1011011y 原码 11011011 1原码 00000001 1原码 10000001 127 原码 01111111 127 原码 11111111原码表示的整
3、数范围是:( 2n-1 1 ) ( 2n-1 1),其中n 为机器字长。则: 8 位二进制原码表示的整数范围是127 12716 位二进制原码表示的整数范围是32767 327675 反码对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。【例2.14 】当机器字长为8 位二进制数时:x 1011011x 原码 01011011x 反码 01011011y 1011011y 原码 11011011y 反码 10100100 1反码 00000001 1 反码 11111110 127 反码 01111111 127 反码 10000000负数的反码与负
4、数的原码有很大的区别,反码通常用作求补码过程中的中间形式。反码表示的整数范围与原码相同。6 补码正数的补码与其原码相同,负数的补码为其反码在最低位加1。【例 2 】( 1 ) x 1011011( 2) y 1011011;.,.( 1)根据定义有:x 原码 01011011x 补码 01011011( 2) 根据定义有:y 原码 11011011y 反码 10100100y 补码 10100101补码表示的整数范围是2n-1 ( 2n-1 1),其中n 为机器字长。则: 8 位二进制补码表示的整数范围是128 12716 位二进制补码表示的整数范围是32768 32767当运算结果超出这个范
5、围时,就不能正确表示数了,此时称为溢出。7 补码与真值之间的转换正数补码的真值等于补码的本身; 负数补码转换为其真值时, 将负数补码按位求反, 末位加 1,即可得到该负数补码对应的真值的绝对值。【例 3 】x 补码 01011001b ,x 补码 11011001b ,分别求其真值x。( 1) x 补码代表的数是正数,其真值:x 1011001b(126 124 123 120 )( 64 16 8 1 )( 89 ) d( 2) x 补码代表的数是负数,则真值:x( 1011001 求反 1 )b( 0100110 1 ) b( 0100111 ) b( 125 122 121 120)(
6、32 4 2 1 )( 39 ) d数值在计算机中表示形式为机器数,计算机只能识别0 和 1,使用的是二进制, 而在日常生活中人们使用的是十进制,正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10 个手指头这个解剖学事实的结果. 尽管在历史上手指计数(5,10 进制 )的实践要比二或三进制计数出现的晚.(摘自 有空大家可以看看哦,很有意思的 ).为了能方便的与二进制转换,就使用了十六进制(2 4) 和八进制 (23). 下面进入正题.数值有正负之分,计算机就用一个数的最高位存放符号(0 为正 ,1 为负 ).这就是机器数的原码了. 假设机器能处理的位数为8.即
7、字长为 1byte, 原码能表示数值的范围为(-127-0 +0127)共 256 个.;.,.有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下 : 假设字长为8bits( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10(00000001) 原 + (10000001)原 = (10000010)原 = ( -2 )显然不正确 .因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间
8、和原码相同且一一对应.下面是反码的减法运算 :( 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) 上 ,在人们的计算概念中零是没有正负之分的.( 印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计
9、数对人类文明的贡献极大).于是就引入了补码概念 . 负数的补码就是对反码加一 ,而正数不变 ,正数的原码反码补码是一样的 .在补码中用 (-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 + (
10、 -2 )10 = ( -1 )10(00000001)补 + (11111110)补 = (11111111)补 = ( -1 )正确所以补码的设计目的是:使符号位能与有效值部分一起参加运算,从而简化运算规则.使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计;.,.所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、c 等其他高级语言中使用的都是原码。原码就是这个数本身的二进制形式。例如0000001就是 +11000001就是 -1正数的反码和补码都是和原码相同。负数的反码是将其原码除符号位之外的各位求反-3 反 =10000011 反 =11111100负数的补码是将
11、其原码除符号位之外的各位求反之后在末位再加1。-3 补 =10000011 补 =11111101一个数和它的补码是可逆的。为什么要设立补码呢?第一是为了能让计算机执行减法:a-b 补 =a 补 +( -b )补第二个原因是为了统一正0 和负 0正零: 00000000负零: 10000000这两个数其实都是0,但他们的原码却有不同的表示。但是他们的补码是一样的,都是00000000特别注意,如果+1 之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)10000000 补=10000000 反 +1=11111111+1=(1)00000000=00000000( 最高位溢出了,
12、符号位变成了0);.,.有人会问10000000这个补码表示的哪个数的补码呢?其实这是一个规定,这个数表示的是-128所以 n 位补码能表示的范围是-2(n-1) 到 2(n-1)-1比 n 位原码能表示的数多一个又例:1011原码: 01011反码: 01011 / 正数时,反码原码补码: 01011 / 正数时,补码原码-1011原码: 11011反码: 10100/ 负数时,反码为原码取反补码: 10101/ 负数时,补码为原码取反 10 1101原码: 0.1101反码: 0.1101 / 正数时,反码原码补码: 0.1101 / 正数时,补码原码-0 1101原码: 1.1101反码
13、: 1.0010/ 负数时,反码为原码取反补码: 1.0011/ 负数时,补码为原码取反 1总结:在计算机内,定点数有3 种表示法:原码、反码和补码所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0表”示正, “1表”示负,其余位表示数值的大小。反码表示法规定: 正数的反码与其原码相同; 负数的反码是对其原码逐位取反, 但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。1、原码、反码和补码的表示方法;.,.(1 )原码:在数值前直接加一符号位的表示法。例如:符号位数值位+7 原 =00000111b-7 原 =10000111b注意: a. 数
14、 0 的原码有两种形式:+0 原 =00000000b-0 原 =10000000bb. 8 位二进制原码的表示范围:-127 +1272)反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“ 1,”数值部分按位取反。例如:符号位数值位+7 反 =00000111b-7反 =11111000b注意: a. 数 0 的反码也有两种形式,即+0 反 =00000000b- 0 反=11111111bb. 8 位二进制反码的表示范围:-127 +1273)补码的表示方法1)模的概念:把一个计量单位称之为模或模数。例如,时钟是以12 进制进行计数循环的,即以 12 为模。在时钟上,时针加上(
15、正拨)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 为模的系;.,.统中,凡是减10 的运算都可以用加2 来代替,这就把减法问题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10 和 2 对模12 而言互为补数。同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8 位也就是256 个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8 位二进制数,它的模数为28=256 。在计算中,两个互补的数称为 “补码 ”。2)补码的表示:正数:正数的补码和原码相同。负数:负数的补码则是符号位为“ 1,”数值部分按位取反后再在末位(最低位)加1 。也就是 “反码 +1”。例如:符号位数值位+7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢病长期管理贵在日常2026
- 甘肃省天水市张家川回族自治县实验中学2026届高三上学期第四次月考生物试卷(含答案)
- 决策中的五大心理陷阱
- 企业文化与团队建设全案教材
- 会计学(人大非会计专业)第11章收入费用和利润
- 18.1.2 分式的基本性质
- 【2026年秋季】高一年级德育工作经验总结课件-劳动教育实践
- 银行前台柜员述职报告范文(4篇)
- 2026年秋季初三班主任毕业班冲刺育人管理课件
- 二年级劳动外研版单元复习第一单元同步测试卷基础版A卷
- 2026年江苏省徐州市中考英语真题(含答案)
- 浙江省G12名校协作体2026-2027学年高三上学期开学考试生物+答案
- 《电机与电气控制技术》课件-1-4 继电器的认识与检测
- AI大模型训练大规模智算中心建设整体方案
- 2026第三季度广西一键游数智文旅产业集团有限公司社会招聘12人笔试题库带答案
- 第二单元.5 将相和 课件 2026-2027学年统编版小学语文 五年级上册
- 小学英语全套语法专项练习题(人教PEP全学段含解析)
- 医疗美容门诊诊疗流程规范指南
- 肝病科管理制度
- 2026年机械制图与公差第一二三章培训课件
- 五升六数学《暑假作业》每日一练 2026
评论
0/150
提交评论