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

定义

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

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

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

Java测试:

int i=1,t=0;

              for(;t<30;)

              {

                     i=i*2;

                     t++;

                     System.out.println("("+t+")\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

与实验相符

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

posted @ 2018-10-08 05:08  CCRNRT  阅读(262)  评论(0)    收藏  举报