zoukankan      html  css  js  c++  java
  • 原码、反码、补码

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

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

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

      一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为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这个整数在计算机中存储形式)

  • 相关阅读:
    极客互动极客技术专题【003期】:java mvc 增删改查 自动生成工具来袭
    协议命令网络工程试验一
    主题网站分享两套免费的超棒响应式HTML5网站模板
    算法结点图的多源点最短路问题和传递闭包之FloydWarshall算法 By ACReaper
    属性页面Flexbox布局的简单演示之二
    数据库性能Quest Performance Analysis Overview
    网站查看帮助查看本地表单元素样子的网站 Native Form Elements
    文件格式配置文件weka频繁模式挖掘使用方法
    风格希望分享8个超棒的免费界面UI设计
    方法事务applicationContext.xml
  • 原文地址:https://www.cnblogs.com/jinseliunian/p/9752488.html
Copyright © 2011-2022 走看看