有符号整数的四种表现形式:原码、反码、补码、移码
原码
原码是⽆符号整数的⾃然⼆进制编码的基础上,通过在其最左边增加⼀位符号位。0表⽰正整数,1表述负整数。
例: 8位⼆进制数表⽰有符号整数X,
X = +7 ,原码 ----00000111;
X = -7 ,原码 ----10000111;
N位原码可以表⽰2n-1个整数。
反码
反码也是在⽆符号整数的⾃然⼆进制编码基础上形成的,当表⽰正整数时,反码和原码的编码规则⼀-致,但当表⽰负整数时,反码除了符号位与原码⼀致外,其余各位的编码均与原码相反。如果⽤8位⼆进制数来表⽰-⼀个有符号整数X的反码,那么最左边的⼀位(即最⾼位)对应为符号位,剩下的7位对应为数值位,举例如下:
若X=+7,那么其反码对应为—0000111;
若X=-7,那么其反码对应为—11111000;
N位原码可以表⽰2n-1个整数
补码
二进制编码转换补码也是在⽆符号整数的⾃然⼆进制编码基础上形成的,当表⽰正整数时,补码和原码反码的编码规则⼀致,但当表⽰负整数时,补码则是在反码的基础上进⾏“加1”处理。
由于“加1”操作可能会引起向最⾼位(符号位)的进位,因此,补码的最⾼位既符号位也是数值位。如果⽤8位⼆进制数来表⽰⼀个有符号整数X的补码,那么最左边的⼀位(即最⾼位)
对应为符号位,剩下的7位对应为数值位,举例如下:
若X=+7,那么其补码对应为—0000111;
若X=-7,那么其补码对应为—1111001;
若X=+127,那么其补码对应为—01111111;
若X=-127,那么其补码对应为—10000001;
N位补码可以表⽰2n个整数,其范围为 [-2n-1:2n-1)
在将负整数补码转换为原码时“减1后取反”与“取反后加1”是等价的,因此今后⽆论是将原码转换为补码,还是将补码转换回原码,都可以采⽤“取反后加1”的⽅式来实现。例如,
若补码为00000111,那么X=7;
若补码为1111001,则取反后为10000110,“加1”后为10000111,那么X=-7。
对于特殊码字10000000,取反后为1111111,“加1”后会产⽣进位,由于原码中的符号位不能兼做数值位,所以在这⾥需要将数值位扩展为8位,这样可得其对应的原码为10000000,那么X= = - 128。
移码
移码也叫增码,是在补码的基础上将符号位取反⽽来的。使⽤移码的⼀个主要原因就是补码不⽅便直接⽐较⼤⼩。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。