java中的原码、反码、补码

原码:是最简单的机器数表示法。用最高位表示符号位,"1"表示负号,"0"表示正号。其他位存放该数的二进制的绝对值。
 例:1010 :
        
        最高位是1,表示这是一个负数,其他三位是:010
        即:从最最右边开始计算结果为
             0 = 0 * 2 ^ 0     => 0
                               +
             1 = 1 * 2 ^ 1    => 2
                               +
             0 = 0 * 2 ^ 2    => 0
             
         ^ 表示幂运算
         再结合最高位是1,表示:1010 是个负数,其结果为 -2 

原码最大的问题就在于一个数加上他的相反数不等于零。        

反码:正数的反码还是等于原码。负数的反码就是他的原码除符号位外,按位取反。
    例:
        3是正数,原码与反码相同,则可以表示为0011
       -3的负数,原码是1011 反码的符号位不变是1,后面3位接位取反100 所以-3的反码就是:1100
       
        
    反码与原码比较,最大的优点,就在于解决了减法的问题

补码:正数的补码等于他的原码,负数的补码等于反码+1
posted @ 2020-01-14 22:10  硝烟漫过十八岁  阅读(914)  评论(0编辑  收藏  举报