计算机的原码、反码、补码

【补码表示】为什么定点小数的-1补码表示为1.0000以及补码表示范围问题 首先了解一下原码,反码,补码的概念 原码 原码的表示方法: 简单来说就是,在机器中我们使用0和1来区分一个数的符号,用0来表示正数,用1来表示负数。而原码表示就是将一个数绝对值的二进制表示出来后根据是正数还是负数在前面加0或1表示数的符号。这里注意一点,在定点小数中,原码是不能表示出-1这个值的 反码 反码的表示方法 简单易懂一些的话其实就是如果是正数,X的反码就等于原码,如果是负数,将X... 阅读详情

计算机的原码、反码、补码

为了方面理解,以8位的1和-1为例,解释原码、反码、补码的计算实例。

  • 计算机中最高位为符号位,符号位为0代表正数(0也划分为正数),符号位为1代表负数。
  • 正数的原码、反码、补码均为本身;
  • 负数的反码为原码除符号位外,其他位全部取反。
  • 负数的补码为反码加1;

1的原码、反码补码为:0000 0001
-1的原码为1000 0001
-1的反码为1111 1110
-1的补码为1111 1111

为什么计算机中会有补码呢?

计算中有了加法,为了节约成本,避免不必要的开销,用加法代替减法,如1-1=1+(-1)。如此,计算机的硬件只需要支持加法即可。

如果用加法来算减法,以1-1为例:
用原码来计算:
0000 0001
+1000 0001
=1000 0010
计算的结果1+(-1)=-2,与实际不符,所以直接用原码计算肯定是不行的,因为符号位参与计算,且计算机又不会区分最高位为符号位。

所以用到了补码进行计算。为了理解补码,下面介绍几个数学上的概念。

模

  • 是指一个计量系统的计数范围。
  • 如时钟的计量范围是0~11,模 = 12。
  • “模”是计量器产生“溢出”的量。
  • 它的值在计量器上表示不出来,计量器上只能表示出模的余数,如12的余数有0,1,2,3,4,5,6,7,8,9,10,11。

补数

假设当前时针指向11点,而准确时间是8点,调整时间可有以下两种拨法:

一种是倒拨3小时,即:11-3=8
另一种是顺拨9小时:11+9=12+8=8(11+1筹够一个模,从头开始重新计数,计数到指定位置8)

在以模为12的系统中,加9和减3效果是一样的,因此凡是减3运算,都可以用加9来代替。
对“模”12而言,9和3互为补数(二者相加等于模)。

所以我们可以得出一个结论,即在有模的计量系统中,减一个数等于加上它的补数,从而实现将减法运算转化为加法运算的目的。
即11-3=11+9=20,因为模是12,所以11-3=11+9=20-12=8

回到1-1的问题,

0000 0001
+1111 1111
等于
0000 0000

7-3
7
0000 0111
-3
-3原码1000 0011
-3反码1111 1100
-3补码1111 1101
0000 0111
+1111 1101
=0000 0100

3-7
-7原码1000 0111
-7反码1111 1000
-7补码1111 1001
3
0000 0011
+1111 1001
=1111 1100
因为结果负数,所以再取补码。(正数的补码还是本身)
0000 0011+0000 0001=0000 0100

总结

  • 计算机中的运算,就是取补码进行加运算,运算结果再取补码,就是正确的值。
  • 反码只是计算时用到的一个临时数,没有实际意义。

尾声

参考文章链接:https://blog.youkuaiyun.com/leonliu06/article/details/78685197

从时钟的举例到为何使用补码的过渡,不是很流畅。感谢大佬提出建议。

计算机原码、反码、补码的计算原理 手把手带你拿捏计算机原码、反码、补码的计算原理 基本概念: 原码: 直接将二进制按照正负数的形式翻译成二进制就可以。 反码: 将原码的符号位不变,其他位依次按位取反就可以得到了。 补码: 反码+1就得到补码。 扩展: 1、在计算机中我们能看到的数值都是原码。 2、在计算机系统中,数值一律用补码来表示和存储,而不是我们看到的原码。原因在于:使用补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器),此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。 3、反码起. 阅读详情

相关推荐

计算机原码,反码,补码,以及之间的转换 ,计算机底层为什么要用二进制反码和二进制补码

首先我们需要知道: 计算机底层的存储方式:所有数字在计算机底层都以二进制形式存在。 二进制数据的存储方式:所有的数值,不管正负,底层都以补码的方式存储。 计算机原码:直接将一个数值转换为二进制,最高位是符号位。符号位正数为0,负数为1。 <font color=#0099ff size=7 face="黑体">color=#0099ff size=72 face="黑体"</font> <font color=#00ffff size=72>color=#00ff

weixin_45931209的博客 1855

-1的源码、反码、补码

-1的补码为11111111(8bit) 过程 1.通常把一个数的最高为定义为符号位,用“0”表示正,用“1”表示负。 -1的原码=10000001 2.反码:对于负数,数符位为1,数符位不变,将数值位诸位取反为反码。 -1:的反码=11111110 3.补码:对于负数,数符位为1,数符位不变,将反码+1=补码。 -1:的补码=11111111 ...

qq_42359085的博客 3万+

Gitlab+Jenkins+Docker+Harbor+K8s+Rancher集群搭建CICD平台

本文以诺依项目为例详细记录了Kubernetes集群的部署过程以及配套DevOps环境的搭建。主要内容包括:1) 配置8个节点的软硬件环境;2) 基础环境准备(网络、防火墙、Docker等);3) 三节点Kubernetes集群部署;4) GitLab代码仓库安装;5) Harbor私有镜像仓库搭建;6) Jenkins持续集成工具配置;7) 基于若依项目的CI/CD实践;8) Rancher集群管理工具部署。

hickman2023的博客 1201

原码、反码、补码、1的补码、2的补码

原码、反码、补码、1的补码、2的补码

听海边涛声 8335

学习笔记之——Event Camera(事件相机)调研

概述 Event Camera是一种bio-inspired sensor,对应的领域为bio-inspired vision。对于传统的相机,从某种程度上,是捕获一个静态/静止的空间,而Event Camera的目的是:敏感地捕捉运动的物体。 对于传统RGB-camera,相机传回的信息是同步的,所谓同步,就是在某一时刻t,相机会进行曝光,把这一时刻所有的像素填在一个矩阵里回传,一张照片就诞生了。一张照片上所有的像素都对应着同一时刻。至于视频,不过是很多帧的图片,相邻图片间的时间间隔...

gwpscut的博客 3万+

逆变器母线电容选型与均压电阻设计实战指南

本文为逆变器母线电容选型与均压电阻设计提供了实战指南。文章从工程角度出发,详细解析了母线电容耐压值、容值的计算方法,并重点强调了纹波电流热设计的重要性。同时,深入探讨了串联电容均压电阻的设计原则与功率计算,通过5.5kW变频器案例,系统演示了从参数确定到最终选型的完整流程,旨在帮助工程师设计出稳定可靠的逆变器系统。

weixin_29299807的博客 291

原码、反码以及补码

减 1 后变为 0,按位取反则又变回 1;直接取反,再加 1,得到的是一样的结果。

Ghosdriver的博客 6034

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 332

原码、补码、反码以及位运算

原码、补码、反码的概念以及位运算原码、补码、反码的概念以及位运算1 原码、补码、反码1.1 原码组成1.2 反码1.3 补码1.4 总结2 位运算2.1 按位与&2.2 按位或|2.3 按位异或^2.4 右移运算>>2.5 左移运算<< 原码、补码、反码的概念以及位运算 1 原码、补码、反码 1.1 原码组成 机器数一个数在计算机中的二进制表示形式,器数是带符号的,...

qq122516902的博客 5132

OPPO 后端校招面试,过于简单了!

你好,我是 Guide。2026 届秋招陆续开奖公司的越来越多了,今天来看一家手机厂 OPPO。前几天,已经分享了和今年校招开奖的情况。其中,小红书的薪资最为炸裂,大白菜一年都能给到 51w+。不过,相对应的工作强度和压力也是真的难顶,确实很难有钱多又轻松的活!OV (OPPO 和 Vivo)这几年发展真还可以的,这两家的高端机口碑都不错。本人也是最近入手了一款 Vivo 的上一代旗舰,拍照是真的不错啊!每个月会有 1.2k 生活补贴,生活费是按照 8 % 缴纳。

JavaGuide 749

【MATLAB代码】二维平面的TOA定位,GDOP(几何精度因子)和CRLB(克拉美罗下界)计算与输出

本文介绍了一个MATLAB程序,用于计算二维定位场景中的几何精度因子(GDOP)和克拉美罗下界(CRLB)。该程序针对单目标和四个锚点配置,通过网格扫描法计算空间各点的GDOP分布,并以等高线图可视化展示。程序还可计算特定位置的理论定位精度下限(CRLB),输出X/Y方向标准差和GDOP值。核心算法通过构建几何矩阵和费舍尔信息矩阵实现,考虑了测量误差影响,并处理了特殊位置情况。程序提供了完整的源代码和参数修改说明,适用于定位系统精度分析。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 802

计算机网络中的原码、反码、补码

原码、反码、补码是计算机组成原理中的概念,是计算机网络的基础知识之一。这些概念是为了处理二进制数的符号位而引入的,常用于计算机中的整数运算,也常用于数据存储和传输等领域。因此,了解和掌握这些概念对于理解计算机网络和计算机组成原理都是非常重要的。

商务合作|种草文章|产品测评 1万+

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年AI编程工具市场已形成四大主力阵营:Cursor(AI原生IDE)、GitHub Copilot(行业标准)、Trae(中国免费方案)和Claude Code(终端交互)。核心差异体现在技术能力(代码生成准确率85%-95%)、智能体协作程度和上下文处理能力(8K-200K tokens)。用户体验方面,Trae对中文支持最佳且免费,Copilot企业集成强,Cursor平衡易用与功能,Claude Code适合高阶开发者。实际测试显示,不同工具在原型开发、算法实现等场景各有优势

fudaihb的博客 6496

原码、反码、补码(计算机底层)

大家看一下数轴,黄色小狗使我们预期的效果,黑色的小狗是实际的效果。我们正常都是认为从1000000变成10000001这个过程是加一,但是因为是负数的原因所以是减一,所以结果与我们的预期相反。因为反码中的0是有两种表现形式11111111(00000000),这导致我们计算过程中,如果没有跨0计算是没有任何问题的,但是如果跨0了,会有一个误差。在-2的基础上+1正常为-1,但是实际上这个值为-3。负数在运算的时候,如果结果不跨0,是没有任何问题的,但是如果结果跨0,跟实际结果会有1的偏差。

LiuYong_01的博客 5426

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7923

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机为什么要使用原码、反码、补码

1. 什么是原码、反码、补码 先看一个例子: +1和-1的原码、反码、补码的表示 [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 原码、反码、补码的计算方式如下: 原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。 反码:正数的反码...

ch717828的专栏 7499

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机原码,反码,补码

最近花了点时间对计算机的原码,反码和补码进行了研究,对为什么要有反码和补码以及他们这么设计的原因有了一定的理解 机器数 一个数在计算机中的表现形式叫做机器数,这个数有正负之分,在计算机中用一个数的最高位(符号位)用来表示它的正负,其中0表示正数,1表示负数。 例如正数7,在计算机中用一个8位的二进制数来表示,是00000111,而负数-7,则用10000111表示,这里的00000111和1...

chenchao2017的博客 12万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机-原码反码补码,为什么用补码?

在计算机系统中,数值的存储和运算依赖于原码、反码、补码三种二进制表示方法。它们的核心目标是解决符号位参与运算的问题,尤其是负数的加减法。

m0_73835569的博客 3040

计算机原码、反码、补码、移码的计算方式

计算机原码、反码、补码的计算方式 机器数 一个数字在计算机中的二进制表现形式叫做机器数。 机器数带符号,即区分正负。 用一个数的最高位表示符号(符号位),0表示正数,1表示负数。 示例:9这个数字,用8位机器数表示为00001001,则-9为10001001,最高位1表示是负数。 原码 原码就是这个数的机器数,就是上文的解释。 8位二进制数的最大值:正数的1111111,即01111111; 8位二进制数的最小值:负数的1111111,即11111111; 1111111是127,所以8位二进制数原码的范围

hanfangzhou6的博客 3万+

计算机基础(9)——原码、反码、补码

计算机为了区分数值的正负提出了符号位的设定,计算机用最高位存放符号,这个被称为符号位。正数的符号位为0, 负数的符号位为1。例如,1的二进制表示形式为0000 0001,而-1的二进制表示形式为1000 0001。在计算机中,一个字节为8个位,最大值为0111 1111,十进制为127。最小值为1000 0000,十进制为-128。因此一个字节的取值范围为-128~127之间。

緑水長流*z 6275

计算机原码、反码、补码

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!   一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表...

qq_38552523的博客 1918

计算机中的进制介绍及原码、反码、补码说明

进制:指进位制,是人们规定的一种进位方式。表示某一位置上的数,运算时是逢x进一位。比如:十进制逢十进一,二进制就是逢二进一,八进制就是逢八进一… 常用进制:二进制,八进制,十进制,十六进制不同进制的书写规则十进制:数值默认都是10进制,不需要加任何修饰符。二进制:数值前面以0b开头,b大小写都可以。八进制:数值前面以0开头。十六进制:数值前面以0x开头,x大小写都可以。

肌肉金轮的博客 1704

计算机编码:原码、反码、补码

在反码时代, 有正0和负0, 如果是4位编码的话,既0000和1000, 由于反码负数计算问题又发明了补码, 正数计算不受影响, 在补码时代正数补码仍然是本身, 表示范围是所以0~127, 而反码的负0在补码时代变成了-128;其实负数的补码等于反码+1只是补码的求法,而不是补码的定义,很多人以为求补码就要先求反码,其实并不是,那些计算机学家并不会心血来潮的把反码+1就定义为补码,只不过补码正好就等于反码+1而已。,而正数与负数相加,或负数与负数相加,就要引起莫名其妙的结果,这都是符号位引起的。

sz_xiaoqi的专栏 1988

计算机数值用补码表示—原码、补码、反码

在计算机系统中,数值一律用补码来表示和存储。 原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。 本质上是因为原码和补码模128同余 参考博客 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机...

qq_40514690的博客 5805

计算机基础:原码补码反码计算

结论: 1.正数的原码=反码=补码 2.负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+1 3. 0 在计算机种分+0与-0,它们的原码,补码,反码如下: 1、[+0]原码=0000 0000, [-0]原码=1000 0000; 2、[+0]反码=0000 0000, [-0]反码=1111 1111; 3、[+0]补码=0000 0000, [-0]补码=0000 0000。

AOSIDIN的博客 2万+

原码、反码、补码的运算及在计算机中的作用

一、概念简述 机器码:一个数在计算机中的二进制形式,机器码是带符号的,在计算机用机器码的最高位存放符号,正数为0,负数为1。 如 0000 0011 和 1000 0011。机器码的真值:机器码除符号位剩下的真正数值。 如 0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1。原码:数值的二进制表示形式,用来转换对应的进制。 如: [+1]原= 000...

TRX的博客 2607
上一篇: ArrayList源码之6260652 bug号
下一篇: 变量、方法的访问权限
ludkjava
博客等级 码龄11年 173粉丝 32原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值