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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是用户态和内核态_进程的用户态和内核态

    什么是用户态和内核态_进程的用户态和内核态要了解什么是用户态,什么是内核态,我们需要先了解什么是进程的用户空间和内核空间:Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节(从虚地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”。而较低的3G字节(从虚地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间”。也就是说,在这4G的…

    2022年9月15日
    4
  • rabbitmq优先级队列_rabbitmq主从模式

    rabbitmq优先级队列_rabbitmq主从模式优先级队列:此队列中的消息可以拥有优先级属性,在发送有优先级属性的消息到此队列时,优先级属性能够生效。优先级高的消息得以提早消费,消息优先级的最大值由队列的属性决定。超出队列的最大值按最大值算。Map<String,Object>priority=newHashMap<String,Object>();priority.put(“x-max-priority…

    2022年9月23日
    4
  • Stata Kendall 相关系数作图

    Stata Kendall 相关系数作图StataKendall相关系数作图回答Superficial.的问题,测试CSDN的markdown发帖功能如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入此帖目的有二:回答Superficial.的问题,测试CSDN的markdown发帖功能如何插入一段漂亮的代码片去博客设置页面,选择

    2022年6月17日
    26
  • 关于web前端性能优化总结[通俗易懂]

    关于web前端性能优化总结[通俗易懂]1、从DOM结构和标签上来优化·使用语义化的标签,代码清晰简洁;·减少Dom节点,增加渲染速度;·使用W3C标准书写闭合小写的标签;·给图片和table指定宽高,避免缩放;·防止src和href值为空,当为空时,浏览器会把当前页面当做属性值重新加载;·css在头部位置,js在body底部位置; 2、从CSS样式上来优化·使用link加载样式而不是@import(是css2提供的一种方式,不兼容,只…

    2022年6月16日
    33
  • phpstome2021激活码【最新永久激活】[通俗易懂]

    (phpstome2021激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWN…

    2022年3月27日
    73
  • WIN7 Microsoft Platform SDK Febrary 2003 安装[通俗易懂]

    WIN7 Microsoft Platform SDK Febrary 2003 安装[通俗易懂]windows7安装了VC没有太多的问题,顺便也装下VC6最后一个可用的SDK从网上搜索windowsplatformsdk2003下载http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1.cabhttp://do

    2022年6月1日
    34

发表回复

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

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