二进制 补码 反码 原码「建议收藏」

二进制 补码 反码 原码「建议收藏」原码补码反码

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、二进制补码的计算方法

二进制的补码计算非常简单,各种教材中也经常使用二进制来说明源码、反码与补码三者的关系,掌握一定基础的人都知道一下规则:

1.1 原码

最高位为符号位,0表示正数,1表示负数。

例如:
X = 0b11 (3),四比特表示原码 = 0011(3) ;

X = - 0b11(-3) ,四比特表示原码 = 1011(11) ;

1.2 反码

最高位为符号位,0表示正数,1表示负数。

正数的反码等于本身,负数的反码除符号位外,各位取反:

例如:
X = 0b11 (3),四比特表示原码 = 0011(3),对应反码为 = 0011(3) ;

X = - 0b11(-3) ,四比特表示原码 = 1011(11),对应反码为 = 1100(12)  ;

1.3 补码

最高位为符号位,0表示正数,1表示负数。

正数的补码等于本身,负数的补码等于反码+1:

例如:
X = 0b11 (3),四比特表示原码 = 0011(3),对应反码为 = 0011(3) ,补码为 = 0011(3);

X = - 0b11(-3) ,四比特表示原码 = 1011(11),对应反码为 = 1100(12),补码为1101(13)  ;

2、十进制的补码计算方法

对于十进制数来说,通过前面的性质不难得到正十进制数补码等于其本身,对于负十进制数来说如果还按位进行运算就太麻烦了!为了讲明白,我们从补码的起因说起:

“反码加一”只是补码所具有的一个性质,不能被定义成补码。负数的补码,是能够和其相反数相加通过溢出从而使计算机内计算结果变为0的二进制码。这是补码设计的初衷,具体目标就是让1+(-1)=0,这利用原码是无法得到的:

二进制 补码 反码 原码「建议收藏」

例如前面举得例子:

例如:
X = - 0b11(-3) ,四比特表示原码 = 1011(11),对应反码为 = 1100(12),补码为1101(13)  ;

二进制 补码 反码 原码「建议收藏」

 

如果使用python的话,可以使用&来快速获取补码:

-3&0xf
Out[1]: 13
    
5&0xf
Out[2]: 5

这里的0xf指的是0b1111,表示4位的寄存器。如果是7位寄存器,0b111111就是0x3f。

3、已知补码怎么求原码?

对于正数来说,根据前面的介绍很容易知道 原码=补码=反码,接下来主要讨论给定负数的补码怎么求负数的原码:

3.1 二进制

先说结论:补码的补码就是原码。下面开始证明:

二进制 补码 反码 原码「建议收藏」

上面两式子说明了:

二进制 补码 反码 原码「建议收藏」

 

也就是说补码的补码就是原码,有点负负得正的意思哦。

3.2 十进制

二进制 补码 反码 原码「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179168.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • py2exe怎么安装_py安装及开发环境设置

    py2exe怎么安装_py安装及开发环境设置一、简介py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32comclient和server,和其它的独立程序。py2exe是发布在开源许可证下的。目前只有py…

    2025年10月25日
    3
  • python3 map object 转list

    python3 map object 转list这里的 mapobject 是 map 函数得到的 不是 直接把 np array map float line strip split dtype np float32 套一个 list 改成 np array list map float line strip split dtype np float32 即可

    2025年7月6日
    3
  • Qt中的角度转弧度[通俗易懂]

    Qt中的角度转弧度[通俗易懂]在Qt中,qAsin(),qAtan2()等三角函数的返回值是弧度而不是角度,因此要将弧度转化为角度。弧度=角度*Pi/180以qAtan()函数为例qrealqAtan(qrealv)Returnsthearctangentofvasanangleinradians.Arctangentistheinverseoperationoftangent….

    2022年6月16日
    87
  • IDEA中Maven配置问题全解决[通俗易懂]

    IDEA中Maven配置问题全解决[通俗易懂]最近换了工作环境,以前的IDEA配置都没了,记得上次配置自己的IDEA还是在两年前?然后构建Maven项目时遇到了一些小插曲,记录下解决方案(PS:新手教程向)1.idea中maven默认配置的坑首先打开File->Settings这里可以直接搜索maven,就可以进入idea的Maven配置选项。我这里是idea默认的maven配置,可以看到默认的Maven目录是idea内置…

    2022年5月27日
    69
  • 数据库系统课程设计(高校成绩管理数据库系统的设计与实现)

    数据库系统课程设计(高校成绩管理数据库系统的设计与实现)数据库课程设计

    2022年7月16日
    21
  • Redis集群部署的三种方式

    Redis集群部署的三种方式Redis 集群的部署方式 1 主从复制 2 Sentinel 哨兵机制 3 cluster 集群 第一种集群方式 部署简单 分为一主一从 或一主 N 从 数据分布是在所有节点通过 replication 复制全量的数据 如果主节点挂掉 需要手动把其中的一个从节点设置为主节点 第二种集群方式 稍微比第一种复杂点 引入哨兵 此集群的原理还是主从复制 但是此集群中必须至少 3 个 sentinel 节点 来对一主两从的节点进行监控 因为 sentinel 里面存在一个 Leader 选举机制 必须是单数 此时 sentinel 哨

    2025年11月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号