在计算机中数据的计算时用数据的补码来计算的。
正数的原码、反码、补码三码合一
负数的反码等于其符号位不变,其他位取反,补码等于负数的反码加
值得注意的是,在计算机中如果两个数计算的结果是正数,那么该值就是实际计算结果,如果计算结果是负数,就需要对计算结果进行一次取反的逆运算,得到实际的计算结果。
为什么在byte转int的时候都要把byte数据&oxff呢?
这是在数据类型改变的时候,会给原来的数据进行补位操作,负数补之后,数据就会改变,不再是原来的数字了, &0xff主要是为了让补码保持一致性,都是在一个模内. 假设这个负数是byte类型的X, 现在从byte升级到int,这时候x的补码就完全不同了,数据的大小完全变了,这样的计算结果肯定就不一样了,就好比试10-1,变成了1000-1,这要样的数据计算结果肯定会变。