原码、反码、补码、移码相互转换及其运算
原码、反码、补码和移码的相互转换
⼀、机器数
连同符号位⼀起数字化的数。
1.特点
①符号数字化
②数值的⼤⼩受机器字长的限制。每个机器数所占的⼆进制位数受限于机器硬件规模,与机器字长有关。超过机器字长的数位要被舍去。
2.真值:机器数中除“+”“-”符号外,其余部分表⽰的值。
3.分类
①⽆符号数:机器字长的所有⼆进制位均表⽰数值。
②带符号数:数值部分和符号均为⼆进制代码表⽰,通常符号位位于最⾼位。符号位“1”表⽰“-”,“0”表⽰“+”。
⼆、原码
原码是保持原有的数值部分的形式不变。小数的原码
整数部分:
当0≤X<2n,[X]原=X [10011001]原= 010011001
当-2n<X≤0,[X]原=2n-X=2n+|X| [-10011001]原= 110011001
⼩数部分:
当0 ≤ X<1,[X]原=X [0.10011001]原= 0.10011001
当-1<X ≤ 0,[X]原=1+|X| [-0.10011001]原= 1.110011001
①将[X]原的符号取反即可得到[-X]原
【例题】设机器字长为8位,写出+37和-37的⼆进制。
解析:37得到的⼆进制数为100101,“+”为1,“-”为0,符号位在最⾼位
[+37]原=(+37)10=(+100101)2=(+00100101)2=00100101
[-37]原=(-37)10=(-100101)2=(-00100101)2=10100101
②原码中0的表⽰不唯⼀
整数原码:[+0]原=00...0 [-0]原=10 0
⼩数原码:[+0]原=0 [-0]原=1.00 0
③原码的移位规则:符号位不变,数值部分左移或右移,移出的空位归0。左移是乘法,右移是除法。移动n位是乘或除2n。
【例⼦】 [0.0110000]原=0.0110000
[0.0110000]原÷2=0.0011000
[0.0110000]原×2=0.1100000
三、反码
①反码与原码的关系
当X≥0,[X]反=[X]原
当X<0,[X]反=[X]原的位取反(符号位不变)
【例⼦】
[+0.1001100]反=0.1001100 [-0.1001100]反=1.0110011
[+1001100]反=01001100 [-1001100]反=10110011
②反码中0的表⽰不唯⼀
[+0]反=00...0 [-0]反=11 (1)
四、补码
补码的⽬的是使得减法也可以按照加法的⽅式来计算(加减法);同时,补码可以将数的符号位和数值域采⽤统⼀⽅式处理。
模(mod)的概念:对于某⼀确定的模,某数减去⼀个数,可以⽤加上那个数的负数的补数来替代。
当X ≥ 0,[X]补=(M+X)mod M=X,正数的补数等于其本⾝。
当X<0,[X]补=(M+X)mod M=M-|X|,负数的补数等于模与该数绝对值之差。
【例⼦】 (5-2)mod 10=(5+8)mod 10=3,所以当模为10时,-2的补数为8。
①补码与原码、反码的关系
当X ≥ 0,[X]补=[X]反=[X]原
当X<0,[X]补=[X]反+1,[[X]补]补=[X]原
【例⼦】机器字长为8,求+37和-37的原码、反码、补码
[+37]原=[+37]反=[+37]补=00100101
[-37]原=10100101
[-37]反=11011010
[-37]反=11011011
②补码中0的表⽰是唯⼀的
[+0]补=00000000 [-0]补=00000000
③补码的表数范围⽐原码⼤
五、移码
移码也称为增码、余码,主要⽤于表⽰浮点数的阶码,因此⼀般表⽰整数。
纯整数移码:[X]移=2n+X -2n≤X<2n
纯⼩数移码:[X]移=1+X -1≤X<1
①移码与补码的关系:整数补码的数值部分不变,符号取反即得整数移码。反之亦然。
当X≥0,[X]移=[X]补+2n
当X<0,[X]移=[X]补-2n
【例1】
[+1101010]补 = 01101010
[+1101010]移 = 11101010
[-1101010]补 = 10010110
[-1101010]移 = 00010110
【例2】在字长为8位的机器中,[X]移=27+X
若X=+1100101 ,则[X]移=27+1100101=10000000+1100101=11100101
若X=-1100101 ,则[X]移=27+(-1100101)=10000000-1100101=00011011
【例3】求+12和-3的8位移127码的⼆进制编码形式
(+12)10=1100,[+12]移127码=127+12=(139)10=(1111111+1100)2=(10001011)2 (-3)10=-11,[-3]移127码=127-3=(124)10=(1111111-11)2=(01111100)2
②移码中0的表⽰是唯⼀的
纯整数:[+0]移=[-0]移=10000000
③移码的表数范围与补码⼀致
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论