zoukankan      html  css  js  c++  java
  • 关于二进制的原码 、反码、补码的简要解释说明

    一、原码

    正数的原码:一个正数,按照绝对值大小转换成的二进制数,称为这个正数的原码。

    负数的原码: 一个负数,按照绝对值大小转换成二进制数,然后最高位补1,称为这个负数的原码。

      例如  00000000   00000000   00000000    00000101  是5的原码

               10000000   00000000   00000000    00000101   是-5的原码

               00000000   00000000   00000000    00001010 是10的原码

               10000000   00000000   00000000    00001010 是-10的原码

    二、反码

    正数的反码:正数的反码和原码相同。

    负数的反码:负数的反码是对其原码除最高位外每一位都取反(每一位取反,除最高位)

     例如    5的原码是  00000000   00000000   00000000    00000101 

                5的反码是  00000000   00000000   00000000    00000101   没变

                -5的原码是   10000000   00000000   00000000    00000101

                最高位不变,其余各位都取反(如果是1则取0,如果是0则取1)

         所以 -5的反码是       11111111   11111111     11111111   11111010

            10的原码是  00000000   00000000   00000000    00001010

             10的反码是  00000000   00000000   00000000    00001010   没变

              -10的原码是    10000000   00000000   00000000    00001010

             最高位不变,其余各位都取反(如果是1则取0,如果是0则取1)

              -10的反码是    11111111     11111111     11111111    11110101

    三、补码

    正数的补码:正数的补码和原码相同。即正数的原码、反码和补码都相同。

    负数的补码:负数的补码是是对其原码除最高位外每一位都取反,然后在最低位加1,就是负数的补码

        例如: -5的原码是  10000000   00000000   00000000    00000101

        首先是对其原码除最高位外每一位都取反 (如果是1则取0,如果是0则取1)-5的原码最高位是 1,取反后最高位还是 1

                 即     11111111   11111111     11111111   11111010        

          然后在最低位加1 即  11111111   11111111     11111111   11111010 + 1

       那么-5的补码是    11111111   11111111     11111111   11111011

         -1 的原码:10000000   00000000   00000000    00000001

         -1 的反码:11111111   11111111   11111111   11111110  (对其原码除最高位外每一位都取反)

        -1的补码:  11111111   11111111   11111111   11111111     (对其原码除最高位外每一位都取反 再加1)

    补充说明:(1)最高位就是符号位,正数的原码符号位是 0 ,负数的原码符号位是 1.

       (2)负数的求反码和补码的取反过程符号位是不参与计算的,要取出来,只有在进行负数补码的加减法的时候符号位才参与计算  

    四、程序代码说明

    代码说明:

     1 public class test {
     2     public static void main(String[] args) {
     3         System.out.println("二进制5: "+Integer.toBinaryString(5));
     4         System.out.println("二进制10: "+Integer.toBinaryString(10));
     5         System.out.println("二进制-5: "+Integer.toBinaryString(-5));
     6         System.out.println("二进制-10: "+Integer.toBinaryString(-10));
     7         System.out.println("二进制 1: "+Integer.toBinaryString(1));
     8         System.out.println("二进制-1: "+Integer.toBinaryString(-1));
     9     }
    10 
    11 }

    输出结果:

       总结:

                (1)正数的反码、补码都与原码相同。

        (2)负数的反码为对该数的原码除最高位(或符号位)外各位取反。

        (3)负数的补码为对该数的原码除最高位(或符号位)外各位取反,然后在最后一位(或最低位)加1

      五、结论

          java中的数,正数是用原码形式表达的,负数使用补码形式表达的。

  • 相关阅读:
    网页连接无法打开可运行
    SET XACT_ABORT
    用Windows Live Writer写CSDN博客的步骤
    ATO,PTO
    什么是贸易顺差?
    ATO/MTO类机械制造业特点以及ERP需求分析(二)
    如何在早期版本的 Office 中打开并保存 Word 2007、Excel 2007 和 PowerPoint 2007 文件
    Alpha和Beta测试简介
    IIS6.0下 Asp网页访问出现500的问题
    合格的程序员
  • 原文地址:https://www.cnblogs.com/yang2000/p/11537725.html
Copyright © 2011-2022 走看看