Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何理解“正数的补码是其本身”

如何理解“正数的补码是其本身”

作者头像
袁承兴
发布于 2021-01-05 06:29:40
发布于 2021-01-05 06:29:40
2.6K0
举报

补数,也叫补码,有“1的补数”和“2的补数”之分,前者多称为“反码”,后者干脆就直接叫“补码”。

为什么计算机系统需要补码,推荐这篇关于2的补码

介绍两者操作细节的文章,也不在少数,本篇不再赘述。但是数次的看到“正数的补码是其本身”这句高亮的句子,着实令人困惑。我在这里尝试解决下。

首先,对于二进制数来说,只要定好了位长,进行反码(1的补数)和补码(2的补数)其实是一件很简单的事情。在纯二进制的表示下,只有0和1,别无他物。0111(4位)的反码就是1000,补码就是1001(反码加1)。所谓正负、符号这些人赋予的意义都不存在,只有二进制数和这些简单操作。

那么,为什么会出现“正数的补码是其本身”这种说法呢?

在计算机中表示负数,如果用最高位表示符号这种“原码”方式,虽然有利于人的阅读,但不利于其本身的计算。所以系统内部就把负数统一用“其对应正数的补码”来表示,而正数自己不用改变。这样变换后,正数虽然形式上没有变,但与原码相比,含义却变了,因为符号位已经不再是符号位了,此时的正数和负数都具有了统一的“补码形式”或称都在一致的“补码编码空间”中。

原码空间到补码空间的转换,并非对每个数点都进行补码运算,只是负数需要,正数不需要而已。

简单来说,“正数的补码是其本身”,这句话想表达含义的意思是,正数在计算机“补码编码空间”中的表示和原码一致。但这绝不等价于“对正数进行补码运算,结果是其本身”。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
学弟不懂原码反码补码,气的我给女朋友讲了一夜
故事是一个真实的故事,前两天要被一位小学弟折磨死,原码、反码、补码不懂就算了,讲了一遍还不懂。
bigsai
2020/08/04
5110
学弟不懂原码反码补码,气的我给女朋友讲了一夜
原码补码反码转换「建议收藏」
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1.
全栈程序员站长
2022/09/29
4.7K0
原码补码反码转换「建议收藏」
深入理解计算机系统cp2:定点数的表示和运算
在深入理解计算机系统cp1:存储单位、数制、编码中解释了字符编码,我们知道了计算机是怎么把字符转化为二进制的;本文将解释数字编码,介绍计算机如何把数字转化为二进制,以及相关的运算问题。
Chor
2019/11/07
1.1K0
浅谈计算机中数值表示:原码、反码、补码与移码
计算机科学中,数字的表示方式至关重要,因为计算机内部只能识别处理二进制数据。为了在计算机中实现对整数的表示,提出了多种数值编码方式,其中最常用的是原码、反码、补码和移码。
一条晒干的咸鱼
2024/11/19
1.4K0
浅谈计算机中数值表示:原码、反码、补码与移码
深入理解位运算符及其在JavaScript中的应用
沉浸式趣谈
2024/03/13
1480
深入理解位运算符及其在JavaScript中的应用
「原码 反码 补码 移码」一探究竟(中)
上文「原码 反码 补码 移码」一探究竟(一)说了基本定义和原码,对于补码,我们只知道是对原码符号位不变,其他位置取反,最后再加 1 得来的,为何如此呢?接下来咱们来揭下「补码」的面具,看看它到底是什么。
全栈程序员站长
2021/07/01
3320
深度理解 原码, 反码, 补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8
互联网金融打杂
2018/04/03
1.1K0
深度理解 原码, 反码, 补码
三分钟基础:举个例子读懂原码、反码与补码
在 Go 语言中,int8 代表有符号 8 位整数。你觉得输出结果是什么呢?我们在文末再公布答案,在此之前,我们先来回顾一下有符号整数是什么。
帅地
2019/12/06
1.7K0
三分钟基础:举个例子读懂原码、反码与补码
补码到底是个什么东西
先引入一个前提,在计算机中数字是以二进制进行存储的,也就是我们看到的2,在计算机中存储的是10。我们进行的加法运算 2+1=3 在计算机中是这样的(这里先假设计算机存储的是4位二进制数字) 0010+0001=0011
烟草的香味
2019/11/10
7090
正数、负数和补码_正数原码反码补码
计算机中,正数、负数是怎么区分的呢,如何存放正数和负数?这里,就要用到补码这个概念了,先给出结论吧:正数和负数在计算机其实都是使用补码来存放的,并且在计算机中是没有减法运算的,减法实际上就是补码直接相加。
全栈程序员站长
2022/11/17
1.8K0
计算机负数补码_负数用补码表示如何理解
在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码 0000111按位取反为1111000;再加1,所以-7的补码是11111001。 已知一个数的补码,求原码的操作分两种情况: (1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。 (2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取 反,然后再整个数加1。 例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负 数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。 在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模” 的概念: “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范 围,即都存在一个“模”。例如: 时钟的计量范围是0~11,模=12。 表示n位的计算机计量范围是0~2(n)-1,模=2(n)。【注:n表示指数】 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的 余数。任何有模的计量器,均可化减法为加法运算。 例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 一种是倒拨4小时,即:10-4=6 另一种是顺拨8小时:10+8=12+6=6 在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。 对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特 性。共同的特点是两者相加等于模。 对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再 加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的 模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以 了。把补数用到计算机对数的处理上,就是补码。
全栈程序员站长
2022/11/15
2.8K0
数字逻辑基础:原码、反码、补码
以3为例,+3对应的二进制数是00000011,-3对应的二进制数是10000011。
WuShF
2023/03/01
6700
数字逻辑基础:原码、反码、补码
计算机原码反码补码怎么算_-35的原码反码补码
最近花了点时间对计算机的原码,反码和补码进行了研究,对为什么要有反码和补码以及他们这么设计的原因有了一定的理解
全栈程序员站长
2022/08/03
9130
计算机原码反码补码怎么算_-35的原码反码补码
可能是最通俗易懂的 Java 位操作运算讲解
Java 位操作这是一项很基础很基础的知识内容,在所有 Android 和 Java 开发者的学习之路上,大家都接触过,但是实际运用的场景却很少见,很多人估计都忘记有这个知识点了。事实上,在 C/C++ 开发领域因为与硬件的联系更紧密,所以位操作运算应用的更普遍。Java 因为面向对象的特性很多时候不需要接触位操作,但是在某些特定场景下,巧妙运用位操作,能够起到非常高效的的表现。这篇博文不谈应用,只详细讲解与位操作有关的知识点。
Frank909
2019/01/14
1.1K0
原码、反码、补码的正(nao)确(can)打开方式
IT可乐
2018/01/04
1.2K0
原码、反码、补码的正(nao)确(can)打开方式
从强转 byte 说起
  折腾的心,颤抖的手,只因在 main 函数中执行了一次 int 强转 byte 的操作,输出结果太出所料,于是入坑,钻研良久,遂有此篇。
用户1615728
2019/09/04
1.7K0
从强转 byte 说起
原码、反码、补码详解
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为 0,负数为 1。
马修
2021/01/21
1K0
补码
因为机器数在计算时,假设符号位和数值位同一时候參与运算,则可能会产生错误结果;而假设单独考虑符号问题,又会添加运算器件的实现难度。因此,为了使计算机可以方便地对数值进行各种算术逻辑运算,必须对数值型数据进行二进制编码处理。所谓编码是採用少量的基本符号(如0和1),依照一定的组合原则,来表示大量复杂多样的信息的技术。编码的优劣直接影响到计算机处理信息的速度。数值型数据的经常使用编码方法包含:原码、反码、补码。
全栈程序员站长
2021/12/15
5310
原码,反码,补码的深入理解与原理答案_原码反码补码例题详解
本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。
全栈程序员站长
2022/09/29
8000
原码,反码,补码的深入理解与原理答案_原码反码补码例题详解
计算机原理-原码、补码、反码
原码就是原来的编码,就是字面意思,而补码和反码比较奇怪,为什么需要这两种编码,意义是什么?
潇洒
2023/10/20
2370
推荐阅读
相关推荐
学弟不懂原码反码补码,气的我给女朋友讲了一夜
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档