水善利万物而不争,处众人之所恶,故几于道💦
目录
1.带符号数的表示
2.原码
3.反码
4.补码
5.移码(增码)
1.带符号数的表示
通常的做法是约定一个数的最高位为符号位,若该位为0,则表示正数,若该位为1,则表示负数
。 按一个字节8位为例:00000000 无符号位表示的数是:0 - 2
8-1(从0开始所以-1) 有符号位表示的数是:-2
7到2
7-1
2.原码
用最高位表示符号位,数值部分用二进制绝对值表示
,这就是原码的表示方法 +17转换为二进制是:10001,用一个字节表示为:00010001 ->因为是正数,所以最高位为0 所以: +17的原码为:00010001 -17的原码为:10010001
3.反码
原码变反码规则:正数的反码和其原码形式相同,负数的反码是除符号位,其他各位逐位取反(即0变1,1变为0)
原码:+17:00010001 | -17:10010001
反码:+17:00010001 | -17:11101110
4.补码
补码规则为:正数的补码和其原码形式相同,负数的补码是原码除符号位以外逐位取反(即0变1,1变0),最后在末尾加上1
原码:+17:00010001 | -17:10010001
补码:+17:00010001 | -17:11101111
[[x]补]补=[x]原
:-17的原码是10010001 补码:11101111,再补一次:10010001 和原码相同。
5.移码(增码)
无论正数、负数,在补码的基础上对符号位取反
,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0.
补码:+17:00010001 | -17:11101111
移码:+17:10010001 | -17:01101111