• 原码、反码、补码


     数值在计算机中是以补码的方式存储的;

        在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。

    对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。

      一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 [10000010],其最高位1代表负,其真正数值是 -2 而不是形式值130([10000010]转换成十进制等于130)。所以将带符号位的机器数对应的真正数值称为机器数的真值。

    • 原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
    • 反码:反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
    • 补码:补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 
    • 一.原码
    • 1>.正数的原码就是它的本身

        假设使用一个字节存储整数,整数10的原码是:0000 1010

      2>.负数用最高位是1表示负数

        假设使用一个字节存储整数,整数-10的原码是:1000 1010

    • 二.反码

      1>.正数的反码跟原码一样

        假设使用一个字节存储整数,整数10的反码是:0000 1010

      2>.负数的反码是负数的原码按位取反(0变1,1变0),符号位不变

        假设使用一个字节存储整数,整数-10的反码是:1111 0101

    • 三.补码(再次强调,整数的补码才是在计算机中的存储形式。)

      1>.正数的补码和原码一样

        假设使用一个字节存储整数,整数10的补码是:0000 1010(第三次强调:这一串是10这个整数在计算机中存储形式)

      2>.负数的补码是负数的反码加1

        假设使用一个字节存储整数,整数-10的补码是:1111 0110(第三次强调:这一串是-10这个整数在计算机中存储形式)

  • 相关阅读:
    JavaScript没有块级作用域
    JavaScript数据类型
    接口
    Linux用户与组别的操作
    解决 macOS 下 SSH 空闲一段时间后自动断开
    Excel 系列一 之 账户类长数字打开不截断与完全显示
    怎样花两年时间去面试一个人
    北京大学硕士学位论文模板
    Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
    刷 LeetCode 时再学习 Python 中引用
  • 原文地址:https://www.cnblogs.com/jinseliunian/p/9752488.html
Copyright © 2020-2023  润新知