




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机中的原码、反码和补码author:zealjiangtime:2013-4-2目录1.概念2原码2反码2补码2机器数2真值22.为什么要引进反码、补码?33.原码、补码是如何帮助计算机减化减法计算的?34.电脑是如何计算加减法的?41. 概念原码将一个整数,转换成二进制,就是其原码。如单字节的5的原码为:0000 0101;-5的原码为1000 0101。 反码正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。如单字节的5的反码为:0000 0101;-5的反码为1111 1010。 补码正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的原码为1111 1011。机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。真值因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 在计算机中,正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。负数用补码表示,如单字节-5,在计算机中表示为1111 1011。这儿就有一个问题,为什么在计算机中,负数用补码表示呢?为什么不直接用原码表示?如单字节-5:1000 0101。 我想从软件上考虑,原因有两个: 1、 表示范围 拿单字节整数来说,无符号型,其表示范围是0,255,总共表示了256个数据。有符号型,其表示范围是-128,127。 先看无符号,0表示为0000 0000,255表示为1111 1111,刚好满足了要求,可以表示256个数据。 再看有符号的,若是用原码表示,0表示为0000 000。因为咱们有符号,所以应该也有个负0(虽然它还是0):1000 0000。 那我们看看这样还能够满足我们的要求,表示256个数据么? 正数,没问题,127是0111 1111,1是0000 0001,当然其它的应该也没有问题。 负数呢,-1是1000 0001,那么把负号去掉,最大的数是111 1111,也就是127,所以负数中最小能表示的数据是-127。 这样似乎不太对劲,该如何去表示-128?貌似直接用原码无法表示,而我们却有两个0。 如果我们把其中的一个0指定为-128,不行么?这也是一个想法,不过有两个问题:一是它与-127的跨度过大;二是在用硬件进行运算时不方便。 所以,计算机中,负数是采用补码表示。如单字节-1,原码为1000 0001,反码为1111 1110,补码为1111 1111,计算机中的单字节-1就表示为1111 1111。单字节-127,原码是1111 1111,反码1000 0000,补码是1000 0001,计算机中单字节-127表示为1000 0001。 单字节-128,原码貌似表示不出来,除了符号为,最大的数只能是127了,其在计算机中的表示为1000 0000。2. 为什么要引进反码、补码?引进补码的作用是为了让计算机更方便做减法补码、反码就是为了简化减法而来的,将减号化为负数,再将负数化为补码求加法所以对于正数来说,跟正数没关系 不管是正整数还是正小数,原码,反码,补码都全部相同3. 原码、补码是如何帮助计算机减化减法计算的?首先, 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 但是对于计算机, 加减乘数已经是最基础的运算, 要设计的尽量简单. 计算机辨别符号位显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。于是人们开始探索 将符号位参与运算, 并且只保留加法的方法。首先来看原码:计算十进制的表达式: 1-1=01 - 1 = 1 + (-1) = 00000001原 + 10000001原 = 10000010原 = -2 如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数。为了解决原码做减法的问题, 出现了反码:计算十进制的表达式: 1-1=01 - 1 = 1 + (-1) = 0000 0001原 + 1000 0001原= 0000 0001反 + 1111 1110反 = 1111 1111反 = 1000 0000原 = -0发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在0这个特殊的数值上. 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有0000 0000原和1000 0000原两个编码表示0。于是补码的出现, 解决了0的符号以及两个编码的问题:1-1 = 1 + (-1) = 0000 0001原 + 1000 0001原 = 0000 0001补 + 1111 1111补 = 0000 0000补=0000 0000原这样0用0000 0000表示, 而以前出现问题的-0则不存在了.而且可以用1000 0000表示-128:(-1) + (-127) = 1000 0001原 + 1111 1111原 = 1111 1111补 + 1000 0001补 = 1000 0000补但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示。4. 电脑是如何计算加减法的?在电脑内部,所有的运算都是加法。首先,计算机把数转换成二进制(全是0、1代码,转换都是按现成的程序进行),如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经济师考试重点回顾试题及答案
- 毕设绘本设计答辩
- 2025届齐齐哈尔市富裕县三年级数学第一学期期末综合测试试题含解析
- 行政管理经济法实务试题及答案
- 确保市政工程考试复习高效的试题及答案
- 行政管理中的公共关系案例分析试题及答案
- 经济法考试的知识点概述试题及答案
- 水利水电工程哲学思考与实践试题及答案
- 电子信息行业个人工资证明(8篇)
- 行政管理与公共关系的实践模式题及答案
- 部编人教版语文四年级下册《习作:我的“自画像”》课件
- GB/T 15823-1995氦泄漏检验
- GB/T 13891-2008建筑饰面材料镜向光泽度测定方法
- GB 13326-1991组合式空气处理机组噪声限值
- 生命周期评价课件
- 2022年质量员考试题库高分300题有解析答案(浙江省专用)
- 玉米精播机设计说明书
- 包工不包料建设房屋合同
- 单身职工信息登记表
- 网店运营与管理课件
- 餐饮店运营方案完整篇
评论
0/150
提交评论