原码、反码、补码和移码
数值型数据的表示方法
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,即得到移码(与变补等效)。
补码和移码:符号相反、数值位相同。
图片引自中国大学慕课网