补码的运算

【例4】-65的补码是10111111  若直接将10111111转换成十进制,发现结果并不是-65,而是191。  事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。  若要得到一个负二进制数的绝对值(称为真值),只要各位(包括符号位)取反,再加1,就得到真值。  如:二进制值:10111111(-65的补码)  各位取反:01000000  加1:01000001(+65的补码)  这里补充补码的代数加减运算:  1、补码加法  [X+Y]补 = [X]补 + [Y]补  【例5】X=+0110011,Y=-0101001,求[X+Y]补  [X]补=00110011 [Y]补=11010111  [X+Y]补 = [X]补 + [Y]补 = 00110011+11010111=00001010  注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是  100001010,而是00001010。  2、补码减法  [X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补  其中[-Y]补称为负补,求负补的方法是:所有位(包括符号位)按位取反;然后整个数加1。  【例6】1+(-1) [十进制]  1的原码00000001 转换成补码:00000001  -1的原码10000001 转换成补码:11111111  1+(-1)=0  00000001+11111111=00000000  00000000转换成十进制为0  0=0所以运算正确。  3、补码乘法  设被乘数【X】补=X0.X1X2……Xn-1,乘数【Y】补=Y0.Y1Y2……Yn-1,  【X*Y】补=【X】补×【Y】补,即乘数(被乘数)相乘的补码等于补码的相乘。

阅读更多
个人分类: 记忆
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭