原码、反码、补码以及移码的相互转换

it2025-10-27  6

1、原码: 数值位不变,用0/1表示符号,0表示正数,1表示负数。 真值:+1001010 原码:01001010 真值:-1001010 原码:11001010 字长为8位的原码表示范围:-127~+127 【+127】原=01111111 【-127】原=11111111 数值“0”有两种原码形式: 【+0】原=00000000 【-0】原=10000000

2、反码: (1)正数情况:X反=X原 例:X=+1101001(+105) X反=X原=01101001 (2)负数情况:符号位保持为“1”,数值为分别“按位取反” 例:X=-1101001(-105) X原=11101001 X反=10010110 字长为8位的反码表示范围:-127~+127 【+127】反=01111111 【-127】反=10000000 【+0】反=00000000 【-0】反=11111111

3、补码: 【X】补=X+2^n n为编码位数 编码规则: (1)正数:【X】补=【X】原 (2)负数:符号位仍保持为“1”,其余个数值位“按位取反,末尾再加1” 字长为8位的补码表示范围:-128~+127 【+127】补=01111111 【-128】补=10000000 【+0】补=【-0】补=00000000

4、原码和补码之间的转换: (1)已知【X】原,求【X】补 例:已知【X】原=10011010,求【X】补。 解: 【X】原=10011010 【X】补=11100101+1=11100110 (2)已知【X】补,求【X】原。 【【X】补】补=【X】原 例:已知【X】补=11101100,求【X】原。 解: 【X】补=11101100 【X】原=10010011+1=10010100 (3)求补(变补),即已知【X】补,求【-X】补。 【X】补的编码连同符号为一起取反,末尾再加1,即得到【-X】补。 例:已知【X】补=01010110,求【-X】补。 解: 【X】补=01010110 【-X】补=10101001+1=10101010

5.移码: 通常只用于表示整数。 对于定点整数X,【X】移=2^(n-1)+X,n是X原的位数。 上述规则等价于将X正向平移或增加2^(n-1),因此被称为移码或增码。 例: 当正数X=+10101时,【X】移=2^5+X=110101 当负数X=-10101时,【X】移=2^5+X =001011 移码的表示范围与补码一致,0也只有一个移码。 正数:将原码符号取反,即得到移码; 负数:将原码连同符号为一起取反,末尾再加1(与变补等效)。 补码和移码:符号相反,数值位相同。

补码表示与变补运算的区别: 补码表示:符号位不变;负数尾数改变,整数位数不变 10101原->11011 00101原->00101 变补运算:符号位变反,尾数变反,末尾加1 10011补->01101 00011补->11101 【-Y】补也称【Y】补的机器负数。

最新回复(0)