原码表示法规定:二进制表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
正数:
1011
原码:00001011
反码:00001011 //正数时,反码=原码
补码:00001011 //正数时,补码=原码
负数:
原码:10001011
反码:11110100 //负数时,反码为,除符号位然后原码取反
补码:11110101 //负数时,补码为原码取反+1
为什么需要反码,补码:
1、首先原码无法计算减法操作(CPU没有实现减法电路)。
例如5-1只能转换为5+(-1)
原码计算:0101+1001 = 1110 (-6) 错误
补码计算:0101+1111 = 0100 (4) 正确
正是由于原码无法计算减法,所以需要依靠补码来计算,而反码是用来计算补码的
2、原码和反码在表示数的时候的不唯一性,比如表示零的时候,原码就有两种表示法:
[-0]原=10000000
[+0]原=00000000
反码也有两种表示法:
[+0]反=00000000
[- 0]反=11111111
补码则只有一种
[-0]补=00000000
所以在计算机系统中,数值一律用补码来表示和存储
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
正数:
1011
原码:00001011
反码:00001011 //正数时,反码=原码
补码:00001011 //正数时,补码=原码
负数:
原码:10001011
反码:11110100 //负数时,反码为,除符号位然后原码取反
补码:11110101 //负数时,补码为原码取反+1
为什么需要反码,补码:
1、首先原码无法计算减法操作(CPU没有实现减法电路)。
例如5-1只能转换为5+(-1)
原码计算:0101+1001 = 1110 (-6) 错误
补码计算:0101+1111 = 0100 (4) 正确
正是由于原码无法计算减法,所以需要依靠补码来计算,而反码是用来计算补码的
2、原码和反码在表示数的时候的不唯一性,比如表示零的时候,原码就有两种表示法:
[-0]原=10000000
[+0]原=00000000
反码也有两种表示法:
[+0]反=00000000
[- 0]反=11111111
补码则只有一种
[-0]补=00000000
所以在计算机系统中,数值一律用补码来表示和存储