文档章节

重温计算机二进制补码

何川jad
 何川jad
发布于 2017/07/26 00:18
字数 879
阅读 12
收藏 0
点赞 0
评论 0

       亚里士多德说:“今天十进制的广泛采用,只不过是我们绝大多数人生来具有10个手指头这个解剖学事实的结果。”然而,数在计算机中确是以二制形式表示的,因为计算机是用数字电路搭成的,数字电路中只有1和0两种状态,也就是说计算机只有两个手指头,所以对计算机来说二进制(Binary)是最自然的计数方式。

       实事上,数在计算机中不仅仅是以二进制形式表示,而且是以二进制的补码形式表示的,何为补码?为什么要用补码?下面从数计算机表示形式说起。
数分为有符号数和无符号数,对于有符号数,它有三种表示形式:原码、反码和补码。在它的二进制原码中,用最高位表示符号位,如果最高位为0,表示该数为正数,最高位为1则表示为负数。比如00000001是1的原码,而10000001则是-1的原码。

       因为人为的把一个数字的原码最高位定义为符号位,而计算机在运算的过程中,如果用原码计算,可能并不能正确的识别,比如假设字长为8bits 要完成,1-1 =0的运算时,计算运算过程如下:

( 1 ) - ( 1 )

= ( 1 ) + ( -1 )

= (00000001)+ (10000001) -------原码计算

= (10000010)= ( -2 )

这结果显然不正确,不正确的原因就是因为-1的高位符号位被当做普通数位参与运算了。

       为了让符号位一起参与计算而不出现错误,引进反码和补码的概念:原于正数而言,它的反码与补码跟原码相同,对于负数而言,它的补码是在原码的基础上保持符号位不变,而其它各位取反得到反码,补码则被定义成它的补码加1即:

正数:

       原码=反码=补码
负数:

       反码=其原码除符号位之外的各位求反

       补码=反码+1  (如果+1之后有进位的,要一直往前进位,包括符号位)

补码有以下几个特性:

1.补码本身具有幂等性:该特性决定我们虽然运算使用补码,但是通过两次补码可以回到原码;
  ((X)补)补=X
   a+b=(a补+b补)补

2.补码解决了正0 0的二义性,使0的表示得到统一
  正零:00000000
  负零:10000000
  这两个数其实都是0,但他们的原码却有不同的表示。
  但是他们的补码是一样的,都是00000000

3.CPU将加,减法统一为加法运算
  [a-b]补=a补+(-b)补

4.使符号位能与有效值部分一起参加运算,从而简化运算规则。

5.补码使二进制的加、减、移位等操作和十进制具有相同的运算规律;

6.负数-a实际上使用0-a结果,通过二进制运算0-a就是-a的补码,由此可见定义补码就是要求所有算术运算符合现有的运算规律

       正因为如此,计算机底层都是采用补码进行计算的。

上文中粗体字体或红色字体的内容为重点了解或者记忆的内容,更多信息,请用微信扫码关注本人公众号

© 著作权归作者所有

共有 人打赏支持
何川jad
粉丝 24
博文 24
码字总数 57010
作品 0
广州
补基础:自学:计算机科学导论 第三章 数据存储

3.1 数据类型 数字 文字 音频 图像 视频 计算机内部的数据 所有计算机外部的数据类型的数据都采用统一的数据表示法转换后存入计算机中,当数据从计算机输出时再还原回来。这种通用的格式称为...

soulpei ⋅ 2017/05/26 ⋅ 0

二进制补码

二进制补码 青蜂侠2017-12-165 阅读 二进制 为便于表达,在这里假定是在8位机器表示 二进制补码表示 无符号十进制整数x的二进制表示是之间将x不断整除2,然后将余数反向排列得到。比如8的二进...

青蜂侠 ⋅ 2017/12/16 ⋅ 0

原码 && 反码 && 补码

原码 && 反码 && 补码 一、原码 && 反码 && 补码 原码 原码是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为...

秋风醉了 ⋅ 2014/07/27 ⋅ 0

Java位运算符及二进制常识

一、位运算    二、位移运算    三、二进制数   以Java中最常使用的int类型为例(32位)。    ㈠ 符号位   二进制数最左端的数字为符号位:0代表正,1代表负。 ㈡ 最大与最小   ⑴...

Xcafe ⋅ 2016/12/29 ⋅ 0

计算机基础--二进制补充

为了更透彻的理解二进制及在计算机内部的表示,必须要有打破沙锅问到底的决心,就算是进度再慢,基础扎实了,也许走会更远,必境也使用java很多年,各种技术和框架也使用无数,深知原理的重要...

sea ⋅ 2014/02/13 ⋅ 3

为什么int整型(32位)的范围是-32768到32767?

计算机为什么要用反码存储整型 这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767 最小为1111111111111111=-2的15次方减1=-32767 此时0...

lcniuren33 ⋅ 2012/06/26 ⋅ 0

C语言关于补码的解释及误区

在中文的C语言教材中,总有些人被原码、反码、补码弄得晕头转向,下面的文章写的不错,阐述明了,特转载之…… (其实我也觉得反码之类的东西是有些人自作聪明弄出来的定义,反而弄得人晕头转...

sflfqx ⋅ 2013/06/19 ⋅ 1

JavaScript的位运算符

重温整数 ECMAScript整数有两种类型,有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。在ECMAScript中,所有整数字面量默认都是有符号整数。 有符号整数,数值范围从-21474836...

前端届的科比 ⋅ 2014/08/16 ⋅ 0

关于计算机中的《补码》,公式:-n=~n+1 引伸:~n=-n-1

在计算机系统中,数值一律用补码来表示(存储)。主要原因是使用补码可以将符号位和其他位统一处理;同时,减法也可以按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有...

ChrisYuan ⋅ 2012/09/23 ⋅ 0

计算机存储数据的格式

概述 计算机存储的格式是二进制位,8个二进制位表示一个字节,在计算机中二进制位有原码,反码和补码的格式,下面分别介绍 原码:最高位表示符号位,正数0,负数1;其余7位表示数值因此,一字...

rockjh ⋅ 01/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Thrift RPC实战(二) Thrift 网络服务模型

TServer类层次体系 TSimpleServer/TThreadPoolServer是阻塞服务模型 TNonblockingServer/THsHaServer/TThreadedSelectotServer是非阻塞服务模型(NIO) 1 TServer抽象类的定义 内部静态类Args的...

lemonLove ⋅ 10分钟前 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 11分钟前 ⋅ 0

MyBatis源码解读之配置

1. 目的 本文主要介绍MyBatis配置文件解析,通过源码解读mybatis-config.xml(官方默认命名)、Mapper.xml 与Java对象的映射。 2. MyBatis结构 查看大图 MyBatis结构图,原图实在太模糊了,所以...

无忌 ⋅ 15分钟前 ⋅ 0

Ignite的jdbc与网格的连接方式的查询性能对比

环境: 数据量100万 Ignite2.5 Windows10 8g jdbc方式连接 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i......

仔仔1993 ⋅ 30分钟前 ⋅ 0

收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu ⋅ 46分钟前 ⋅ 0

微服务 WildFly Swarm 入门

Hello World 就像前面章节中的其他框架一样,我们希望添加一些基本的 Hello-world 功能,然后在其上逐步添加更多的功能。让我们从在我们的项目中创建一个 HolaResources 开始。您可以使用您的...

woshixin ⋅ 53分钟前 ⋅ 0

Maven的安装和Eclipse的配置

1. 下载Maven 下载地址 2. 解压压缩包,放到自己习惯的硬盘中 此处我将其放到了 D:\Tools 目录下。 3. 配置环境变量 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量。 在系统变量中新建,变...

影狼 ⋅ 今天 ⋅ 0

python pip使用国内镜像的方法

国内源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://......

良言 ⋅ 今天 ⋅ 0

对于url变化的spa应该如何使用微信jssdk

使用vue单页面碰上微信jssdk config验证失败的坑。第一次成功 之后切换页面全部失败,找到了解决方法,第一次验证成功后保存验证信息 切换页面时验证信息直接拿来用,加一个wx.error() 失败时...

孙冠峰 ⋅ 今天 ⋅ 0

Spring Cloud Gateway 一般集成

SCF发布,带来很多新东西,不过少了点教程,打开方式又和以前的不一样,比如这个SCG,压根就没有入门指导,所以这里写一个,以备后用。 一、集成 pom.xml <dependency> <groupI...

kut ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部