数据的原码、反码、补码和移码
类型正数负数示说明
原码最高位符号位为0,表示正数,其他位存放该数的二进制的绝对值最高位符号位为1,表示负数,其他位存放该数的二进制的绝对值
反码=原码在原码基础上,符号位不动,其他位按位取反
补码等于原码反码+1或[(2^机器字长)-|负数|]的原码整型数据在内存中,以二进制的补码形式进行存放;+10的补码:
移码补码的符号位取反补码的符号位取反

1、补码
正数:原码 =反码=补码
负数:补码=原码符号位不变,数值位取反+1

8bit空间,补码规定1000 0000专门表示最小值-128
举例10和-10的补码存储过程如下
(1)+10的补码
将10进制转换为二进制:1010
补齐8位,最高位位符号位0:0000 1010
(2)-10的补码
写出10的8位原码 0000 1010
改写成-10,最高位为1:1000 1010
求反码(符号位不变,其他位01翻转):1111 0101
反码+1:1111 0110
结论:-10的8位补码:1111 0110
-10的16位补码:1111 1111 1111 0110

举例10和-10的补码读取过程如下
对补码-1,取反(符号位保持):1111 0101-》1000 1010

在实际计算机中,有符号和无符号是有区别的:CPU把数据进行计算时,需要把变量的数据从存储单元取出来给到CPU内部的寄存器(运算寄存器),当变量的数据小于寄存器的时候,有符号的数据拷贝到寄存器的时候,高出高位,需要补符号位。无符号的数据,拷贝到寄存器,多出来的为补0(总结:有符号的补符号,无符号的补0