• 原码 反码 补码 移码


    最近在学习计算机组成原理的过程中遇到了这样的问题,关于原码反码补码移码的问题。这四个码在遇到的过程中会很纠结不知道该如何下手,一时间就会很混这里进行一些总结。

    注意正数和+0的原码 反码 补码均是一样的没有变化!!!

    首先我们将他们分类,分为原码和反码 补码和移码这两种。

    原码和反码是相对应的两者之间的关系就是符号位不发生变化而其他位置进行取反的操作。

    补码和移码的关系是只将符号位取反其他位置不变即可。

    原码和补码的关系就是原码的符号位不发生改变其他位置取反再加一即可

    我们发现通过这样的关系我们就可以将这四个码的关系连接起来了。我们很容易的得到原码那么我们在保持符号位不变其余位置取反就可以的到反码。我们也可以保持符号位不变其他位置取反加一得到补码。得到补码之后只需要对符号位取反就可以得到移码了。由于原码和补码的关系就是原码的符号位不发生改变其他位置取反再加一即可和原码和反码是相对应的两者之间的关系就是符号位不发生变化而其他位置进行取反的操作。所以补码也可以看做在反码的基础上加一!(再次注意一下正数和+0的原码 反码 补码是一样的!!!)

    接下来我们讨论这几个码的取值范围:

    由于原码是和反码相对应的所以他们的取值范围是一样的 为+0~2^n-1和1-2^n~-0;

    补码和移码也是相对应的他们的取值范围是一样的为-2^n~2^n-1中间注意只有一个+0是没有-0的和原码反码相比较负数范围多了一个最小的少了一个最大的。

    以8位举例子

    原码部分:                        反码部分:

    +0:0000 0000                   0000 0000     

    -0:1000 0000                    1111 1111

    127:0111 1111                   0111 1111

    -127:1111 1111                  1000 0000

    补码部分:

    0:0000 0000

    -1:1111 1111(注意无论是什么位制-1都是全部位置都是1 推导:原码1000 0001转换即可得到)

    -127:1000 0001

    127:0111 1111

    -128:1000 0000

    移码部分:

    0:1000 0000

    127:1111 1111

    -128:0000 0000

  • 相关阅读:
    淘宝商品评论数据爬取:Python实战指南
    Java程序员必看,java技术面试评语及录用建议
    Ambire 的柏林冒险之旅,快来一起看看团队带来的日志的剪报吧!
    MQ系列3:RocketMQ 架构分析
    docker入门
    分布式项目搭建
    数据首发,智驾域控制器「重构芯片格局」,谁在领跑汽车新赛道
    C# 赖加载+多线程安全实现日志文件
    cmd界面中文显示?VS控制台中文显示?
    python毕业设计题目推荐飞机票销售订票系统
  • 原文地址:https://blog.csdn.net/m0_53345417/article/details/126685673