原码、反码、补码和移码

数值型数据的表示方法

1.1 进位计数制

 

数制的基与权

在任一数制中,每一个数上允许使用的计数符号的个数被称作该数制的基数。

每一位都对应一个表示该位在数码中的位置的值,这个值就被称为数位的权值w。

原码、反码、补码和移码

常用的几种进位制

(1)2进制:0,1

(2)8进制:0,1,2,3,4,5,6,7

(3)17进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

进制之间的转换

(1)整数10->2(除2取余法)

(2)小数10->2(乘2取整法)

(3)整数2->10(按权相加)

(4)小数2->10(按权相加)

(5)16进制<--->2进制(逐位转换/分组转换)

 

原码、反码、补码和移码

原码、反码、补码和移码

1.2带符号数的表示

 

“0”表示正号,“1”表示负号

 

二进制的码制:原码、反码、补码、移码

 

1.原码

一个二进制数,用0或1表示符号,数值位不变,就得到与该二进制数真值对应的原码

原码、反码、补码和移码

字长为8位的原码

 

表示范围为:-127~127

[+127]原=01111111

[-127]原=11111111

 

数值“0”有两种原码形式:

[+0]原=00000000

[-0]原=10000000

 

2.反码

正数情况下(X>=0)

X反=X原

 

负数情况下(X<0)

符号位保持为“1”,数值为分别“按位取反”

 

字长为8位的反码

 

表示范围为:-127~127

[+127]反=01111111

[-127]反=10000000

 

数值“0”有两种反码形式:

[+0]反=00000000

[-0]反=10000000

 

3.补码

编码定义:[X]补=X+2^n(模2^n),n为编码位数

规则:

(1)对于正数(x>=0)

[X]补=[X]原

(2)对于负数

字符位保持为“1”,其余各位数值“按位取反,末尾加1”

[X]补=[X]反+1

 

字长为8位的补码

 

表示范围为:-128~127

[+127]补=01111111

[-128]补=10000000

 

补码比原码和反码多表示1个负值,即-128

数值“0”有1种补码形式:

[+0]补=[-0]补=00000000

 

4.移(增)码

移码通常用于表示浮点数的阶码。

阶码一般为整数,故移码通常只用于表示整数

对定点整数x,它的移码是:

[X]移=2^ (n-1) +x,其中-2^ (n-1)<x<2^ (n-1) n为X原 的位数

 

上述规则等价于将x正向平移或者增加2^ (n-1),因此称之为移码或增码

原码、反码、补码和移码

移码表示范围和补码一致,0也只有1个移码。

正数:将原码符号位变反,即得到移码。

负数:将原码连同符号为一起变反,末位加1,即得到移码(与变补等效)。

补码和移码:符号相反、数值位相同。

 

图片引自中国大学慕课网