数据的原码、反码、补码和移码

数据的原码、反码、补码和移码 类型正数负数示说明原码最高位符号位为0表示正数其他位存放该数的二进制的绝对值最高位符号位为1表示负数其他位存放该数的二进制的绝对值反码原码在原码基础上符号位不动其他位按位取反补码等于原码反码1或[2^机器字长-负数]的原码整型数据在内存中以二进制的补码形式进行存放10的补码移码补码的符号位取反补码的符号位取反1、补码正数原码 反码补码负数补码原码符号位不变数值位取反18bit空间补码规定1000 0000专门表示最小值-128举例10和-10的补码存储过程如下110的补码将10进制转换为二进制1010补齐8位最高位位符号位0:0000 10102-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