一、转化方式

1、原码

把数值转成二进制,从右往左,位数不足补0。

首位是符号:0:正数 1:负数。

原码不能运算

2、反码

正数,反码 = 原码

负数:反码 = 原码 符号位不动,其他位数取反

3、补码

正数:补码 = 原码

负数:负数 补码 = 反码 1

4、移码

正数、负数:移码 = 反码 首符号位 取反。

5、示例:

数值6、-6的一个字节(8位),原码、补码、反码、移码

数值 6 -6

原码:0000 0110 (不变) 1000 0110

反码:0000 0110 (不变) 1111 1001 (符号位不动,其他位数取反)

补码:0000 0110 (不变) 1111 1010 (反码 1,符号位也进位,看下图)

移码:1000 0110 (反码首符号位取反) 0111 1010 (反码首符号位取反)

常用区位码内码自动转换(软考笔记02关于原码)(1)

原码、反码、补码、移码

二、取值范围

原码: -(2^(n-1) - 1) 到 2^(n-1)-1 ; 8位: -127 到 127

反码:-(2^(n-1) - 1) 到 2^(n-1)-1 ; 8位:-127 到 127

补码:-2^(n-1) 到 2^(n-1)-1 ; 8位: -128 到 127 (因为补码的 0和-0是一样的)

,