• 【作业】原码、反码、补码(在Java相比C也没啥特殊的所以算是复习吧)


    定义

    原码:用数值位和符号位表示一个带符号的数

    反码:正数的反码与原码相同,负数的反码是对该数的原码除符号位外各位取反

    补码:正数的补码与原码相同,负数的补码是对该数的原码除符号位外各位取反,末位加1

    Java测试:

    int i=1,t=0;

                  for(;t<30;)

                  {

                         i=i*2;

                         t++;

                         System.out.println("("+t+") "+i);

                  }

    //得到最大在2^30到2^31,根据经验应该是比2^31略小,2^31=2147483648

                  i=i-1;

                  i=i*2;

                  System.out.print(i++);  

                  System.out.println("  *-1   "+-1*i); 

                  System.out.print(i++);  

                  System.out.println("   *-1  "+-1*i);

                  System.out.print(i++);  

                  System.out.println("   *-1  "+-1*i);

                  System.out.print(i++);  

                  System.out.println("  *-1   "+-1*i);

                  System.out.print(i++);  

                  System.out.println("  *-1   "+-1*i);

                  System.out.print(i++);  

                  System.out.println("   *-1  "+-1*i);

                  System.out.print(i++);  

                  System.out.println("  *-1   "+-1*i);

    输出:

    (1)   2

    (2)   4

    (3)   8

    ……

    (28)  268435456

    (29)  536870912

    (30)  1073741824

    2147483646  *-1   -2147483646            //2^31-2

    2147483647   *-1  -2147483647          // 2^31-1

    -2147483648   *-1  2147483648           //2^31

    -2147483647  *-1   2147483647         // 2^31+1

    -2147483646  *-1   2147483646          // 2^31+2

    -2147483645   *-1  2147483645          // 2^31+3

    -2147483644  *-1   2147483644         //  2^31+4

    2^31-2 二进制表示为:0111 1111 1111 1111 1111 1111 1111 1110

    2^31-1 二进制表示为:0111 1111 1111 1111 1111 1111 1111 1111

    2^31   二进制表示为:1000 0000 0000 0000 0000 0000 0000 0000

    所以不是原码

    对于2^31

    如果是反码

    1000 0000 0000 0000 0000 0000 0000 0000 表示负数取反得

    1111 1111 1111 1111 1111 1111 1111 1111 换算为十进制是 - 2^31-1

    如果是补码

    1000 0000 0000 0000 0000 0000 0000 0000

    表示 - 2^31

    对于2^32 1000 0000 0000 0000 0000 0000 0000 0001

    反码 1000 0000 0000 0000 0000 0000 0000 0000

    原码 1111 1111 1111 1111 1111 1111 1111 1111 1111

    表示- 2^31-1

    与实验相符

    经过计算,按照补码其他的均相符。

  • 相关阅读:
    Nginx+.Net Core实现项目负载均衡
    linux(centos8):使用zip/unzip压缩和解压缩文件
    spring boot:用itextpdf处理pdf表格文件(spring boot 2.3.2)
    spring boot:使用poi导出excel电子表格文件(spring boot 2.3.1)
    spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)
    暗夜模式配置
    简述逻辑外键
    分页后端逻辑
    python算法时间复杂度
    python五大排序算法
  • 原文地址:https://www.cnblogs.com/CCRNRT/p/9752313.html
Copyright © 2020-2023  润新知