zoukankan      html  css  js  c++  java
  • 二进制中的原码、反码和补码的概念

    本篇文章介绍了原码、反码和补码的概念,其次介绍了正负数的原码、反码及补码的转换。

    机器数与真值

    机器数

    一个数的二进制表现形式。其中二进制最高位表示正负,1表示负数,0表示正数。比如

    5(十进制)-> 00000101(二进制)

    -5(十进制)->10000101(二进制)

    真值

    用“+”、“-”号加绝对值来表示数值的大小,用这种形式表示的数值。比如下面的+5,-5。

    5(十进制)-> 00000101(二进制)-> +000 0101=+5

    -5(十进制)->10000101(二进制)-> -000 0101 =-5

    总结一下,真值是带有正负号的数值,机器数是用0或1来表示正负号的数值。

    原码、反码和补码的概念

    先说结论:

    1. 正数的原码、反码、补码都相同;
    2. 负数的原码:最高位为1,其余位为真值的绝对值;
    3. 负数的反码:在原码的基础上,符号位不变,其余位按位取反;
    4. 负数的补码:在原码的基础上,符号位不变,其余位取反,最后加1;也就是在反码的基础上加1。

    原码

    原码:第一位表示符号,其余位表示值。举例说明

    +12-> 0000 1100 (原码)

    -12-> 1000 1100 (原码)

    对应的取值范围就是[1111 1111,0111 1111],范围是[-127,127]

    反码

    正数的原码、反码、补码都相同;

    负数的反码:在原码的基础上,符号位不变,其余位按位取反。举例说明:

    +12-> 0000 1100 (原码) -> 0000 1100(反码)

    -12-> 1000 1100 (原码) -> 1111 0011(反码)

    补码

    正数的原码、反码、补码都相同;

    负数的补码:比如-12,

    1. -12的原码:1000 1100
    2. 最高位不变,其余位取反:1111 0011
    3. 加一得到补码:1111 0100

    这里如果要将负数的补码转为原码,操作方法一样;

    1. -12的补码:1111 0100
    2. 最高位不变,其余位取反:1000 1011
    3. 加一得到原码:1000 1100

    关于补码范围为什么是[-128~127]的问题?

    这个问题我也没搞懂,可以先看看第二个参考链接,思考一下。

    参考链接

    https://www.cnblogs.com/red-code/p/6520462.html

    https://wenku.baidu.com/view/4d9cfe8b7cd184254a353515.html

  • 相关阅读:
    CPU 后缀
    获取当前IP的接口
    win10 禁用自动更新
    C# 调用腾讯云接口获取视频基本信息
    SQL Server服务器角色和数据库角色描述
    C# 使用cmd
    C# 对DataTable的简单操作
    参考文档链接地址-个人比较推荐的
    类似input框内最右边添加图标,有清空功能
    CentOS-6.3安装Mysql-5.5.29[转]
  • 原文地址:https://www.cnblogs.com/benjieqiang/p/11331047.html
Copyright © 2011-2022 走看看