在计算机中,使用二进制表达数字,例如,一个字节(8位)可表示的范围是0到255(在不考虑符号的情况下),即00000000到11111111。

考虑到数字有正负,我们第一时间想到,空出一位来表示符号位,例如0表示正,1表示负。则理论上我们表示的范围是-127到+127。这种表达 方式简单明了,好理解,但是有如下几个缺点:

当碰到数字0的时候,这个时候有两种表达方式,即-0和+0,这会造成一个数字有两个表达形式

当计算的时候,符号位不能参加计算,增加了计算的复杂度

计算的时候很据符号不同,需要转换成加法或者减法来计算,这对电路的设计不太友好,增加了设计的复杂度

所以,引入了一个全新的表达形式,补码

原码

在介绍补码之前,我们先来看看几个相关的概念,第一个就是原码

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

以一个字节为例,例如:

+11原码表示为00001011

-11原码表示为10001011

+0原码表示为00000000

-0原码表示为10000000

原码表示有简单易懂的优点,但是原码的符号位不能直接参与运算,必须和其他位分开,这就增加了硬件的开销和复杂性。

反码

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

上面是百度百科的定义和反码的计算方式,我们可以以一种简单的方式概括为:

一个数的反码为这个数的绝对值各位取反

+11反码和原码表示方式相同,为00001011

-11原码表示为10001011,按照定义,其反码为保留第一位符号位,其余位数取反,即11110100,按照我们简单的定义,即为11的原码各位取反,即00001011各位取反,也是相同的结果

+0反码表示为00000000

-0反码表示为11111111

反码码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。

补码

来到这边文章的重点了,在计算机里面,定点数既不是使用原码表示,也不是使用反码表示,而是使用补码

百科解释如下

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

首先,我们阐述下补码的计算方式

正数的补码为其原码

负数的补码为其反码加1

例如

+11的补码 = 原码 = 00001011

-11的补码 = 反码 + 1 = 11110100 + 1 = 11110101

+0的补码 = 原码 = 00000000

-0的补码 = 反码 + 1 = 11111111 + 1 = 00000000 (高位溢出)

补码的特性

一个负整数(或原码)与其补数(或补码)相加,和为模。

“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。

以-11举例

-11 原码为 10001011

-11 补码为 11110101

相加为10000000(高位溢出)=128,这个128即为8位定点数的模

对一个整数的补码再求补码,等于该整数自身。

这个也是补码的优势之一,原码和补码的转换,可以使用同一套规则,我们以一个负数为例

-11的原码为10001011

通过补码的规则转为之后为11110101,此为-11的补码

该补码再通过相同的规则转换为(11110101的反码加1),10001011

补码的正零与负零表示方法相同。

在原码里面,+0和-0的表示方式不同,运算和表达的时候需要增加一些额外的逻辑,在补码里面则没有这个烦恼,补码的+0和-0的表示方式均为00000000(以8位为例)

补码的计算的时候,符号位可以加入运算

这也是补码的优势之一,这样可以简化电路逻辑,我们这里面举个简单的例子

11+(-2)

11的补码为00001011

-2的补码为11111110

直接相加加过为00001001=9

总结

补码只是一种相对合理的编码方案。这个方案在负数的机器表示中解决了3个问题:

数的表示

数的运算

自身逻辑意义的完整性

参考链接

计算机数字表示方法有哪些,补码(计算机中数字的表示方式)相关推荐

  1. 计算机仿真模拟在装配,飞机装配仿真中数字人模型及工人姿态的模拟

    飞机装配仿真中数字人模型及工人姿态的模拟 由于飞机的结构及其制造工艺复杂,制造过程中的工艺性问题和人机问题时有发生.采用数字人和计算机仿真技术,模拟飞机制造中工人的作业姿势,为在生产准备阶段提前发现这 ...

  2. win10计算机重新启动,解决方法:为什么win10计算机在关闭后会自动重新启动

    升级到Win10系统的正式版本后,在系统的正常使用过程中,将无缘无故地自动重启.通常,这种情况是由硬件不兼容引起的.那么您知道win10计算机为何在关闭后自动重新启动吗?以下是有关win10计算机关机 ...

  3. 台式计算机和笔记本计算机区别,【单选题】计算机的分类方法有多种,按照计算机的性能和用途分,台式计算机和笔记本计算机属于_________。...

    参考答案如下 单选的分多种[单选题]任何人只要有一个(),都可以方便而安全地使用贝宝支付进行在线发送和接收付款,避免了传统的邮寄支票或者汇款的方法.A. 护照号码 B. 邮政编号 C. 门牌号码 D. ...

  4. 提高记忆计算机知识的方法有哪些,由计算机的记忆方法想到...

    计算机的储存方式是怎样的呢? (一)由计算机的储存方式想起 让我们想象一下,计算机是如何储存信息的呢? 首先,计算机对所输入的信息进行编码(将大量信息转化二进制): 之后,再进行储存: 当需要用的时候 ...

  5. 计算机日志研究方法,基于日志的计算机取证技术研究与实现

    摘要: 计算机技术的飞速发展为人类文明开启一扇新大门,它在创造巨大财富的同时,也必然伴随毁坏的发生,计算机犯罪便是其中最常见也最屡禁不止的网络犯罪行为.计算机取证技术正是在这种情况下产生并发展起来的, ...

  6. 如何格式化电脑_计算机格式化的方法教程

    格式操作通常会导致现有磁盘或分区中的所有文件都被清除.它是初始化磁盘或磁盘中的分区的操作.有时当计算机出现问题时,我们希望格式化硬盘来解决问题.接下来,我将教你两种格式化计算机磁盘的方法. 如何格式化 ...

  7. winxp 更改计算机名,winxp netbios计算机名修改方法【图文】

    在winxp盘系统局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享,不同NetBIOS名称都配置成一个唯一的(专有的)名称或组(非专有的)名.今天系统盒小编将给大家分享的是修改net ...

  8. 计算机基础与应用相关的论文,计算机基础方面论文范文资料,与国内高校计算机基础教育相关毕业论文模板范文...

    计算机基础方面论文范文资料,与国内高校计算机基础教育相关毕业论文模板范文 关于计算机基础及计算机及大学计算机方面的免费优秀学术论文范文,计算机基础方面毕业设计论文,关于国内高校计算机基础教育相关论文范 ...

  9. 教师计算机提升学到的知识,教师计算机教学工作总结(精选6篇)

    教师计算机教学工作总结5 xxxx年度学年第二学期,我担任<计算机应用基础>.<计算机原理>.<局域网组网技术与上机指导>三门课程的教学.本人在教育教学岗位上,爱岗 ...

最新文章

  1. mysql设计数据集市_数据集市设计
  2. 8 关于数据仓库维度数据处理的方法探究系列——父子维
  3. ACM模板--邻接矩阵 有向图 搜索算法
  4. Java生成随机数的几种高级用法
  5. 理解 Java 核心基础精髓
  6. 罗格斯大学电子与计算机系排名,罗格斯大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
  7. CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)
  8. 13 个开源备份解决方案
  9. Maven工作笔记003---公司只允许代理上网_给maven配置代理下载jar包
  10. linux 开放端口
  11. ghost系统卡正在启动服务器,GHOST完后安装win7系统卡在正在启动windows界面...-华硕笔记本装win7,华硕win10改win7步骤...
  12. C语言 Fibonacci数列(递推)
  13. diffmerge对比时出现中文乱码的解决办法
  14. Office三件套批量转PDF以及PDF书签读写与加水印
  15. 2种方法,当文本框输入@自动补全邮箱后缀(特别是命名空间的引用,共三种方法)
  16. 获取微信小程序右上角胶囊的位置
  17. git/github入门
  18. 21_lua生成随机数
  19. 软件测试-测试面试题
  20. MYSQL相关内容(引擎、隔离级别、实现原理)

热门文章

  1. 5月6日—5月9日三年级课程新
  2. 画家王俊杰主编中国艺苑大型名家活动发布会
  3. 英语语法第四节(主宾表从句)
  4. IDEA插件【美化插件】
  5. 为什么springcloud值得我们学习?
  6. 为什么自学Java学不好?大概率是这3个原因
  7. 什么是Portable Version?
  8. linux制作剪刀石头布游戏,C#实现剪刀石头布游戏
  9. 京东技术解密读书笔记
  10. 06_04_任务二:SSM拉勾教育后台管理系统(广告模块与用户模块)