快速理解原码、反码和补码和二进制数在计算机中的存储形式。
对于正数,原码=反码=补码
对于负数,
原码:符号位为1,其余位表示该数的绝对值。
反码:符号位不变,其余位取反。
补码:其反码加1(也可以说是其绝对值的原码取反加1。
那么为什么要引入补码呢?是为了存储有符号数更方便,补码的主要优点是:
它只有一个零的表示(+0和-0在补码中是相同的)。
使用补码,我们可以将减法转换为加法,这大大简化了计算机内部的运算。
有符号数:
有符号数的相反数为其所有位取反加1
无符号数:
如上两图,所有数形成一个轮回。当加或减正数时方向如图。
例如,对于8位有符号数char a=127;a+1就为-128。
对于8位,共有2^8=256种状态,一半(128)用来表示负数-1到-128,一半(128)用来表示0和正数1到127,同理16位、32位等。
所以在编程时为了不必要的麻烦,最好注意数据溢出。
😊~