问:补码的符号位为0,则其表示的一定是正数吗?
答:补码的符号位为0,则其表示的一定是正数。
负数的补码是将其原码除符号位外各位取反加1而得到。负数原码的符号位一定为1,即负数的原码一定具有1xxx xxxx之形式。若将其除最高位之外逐位取反加1后最高位变为0,则该原码一定为1000 0000。而此恰为(-0)的原码。这就是说,唯有(-0)这个“负数”的补码(0000 0000)的符号位为0,其余负数的补码的符号位一律为1。
除(-0)这个“负数”外,任何负数的原码1xxx xxxx在除最高位按位取反加1后都不能使其最高位1得到进位而变为0。所以除(-0)这个“负数”外,任何负数的补码的符号位均为1。
(+0)的补码亦为0000 0000。
将补码还原为原码的方法是:将补码减1,再除最高位之外逐位取反,即得其原码。这里的担心就是,在此过程中,补码的符号位会被借位。事实上,这只会出现在0000 0000与1000 0000两种情况中。好在我们已先知补码(0000 0000)表示(+/-0)、补码(1000 0000)表示(-128),所以这种担心就显得多余了。
负数的补码是将其原码除符号位外各位取反加1而得到。负数原码的符号位一定为1,即负数的原码一定具有1xxx xxxx之形式。若将其除最高位之外逐位取反加1后最高位变为0,则该原码一定为1000 0000。而此恰为(-0)的原码。这就是说,唯有(-0)这个“负数”的补码(0000 0000)的符号位为0,其余负数的补码的符号位一律为1。
除(-0)这个“负数”外,任何负数的原码1xxx xxxx在除最高位按位取反加1后都不能使其最高位1得到进位而变为0。所以除(-0)这个“负数”外,任何负数的补码的符号位均为1。
(+0)的补码亦为0000 0000。
将补码还原为原码的方法是:将补码减1,再除最高位之外逐位取反,即得其原码。这里的担心就是,在此过程中,补码的符号位会被借位。事实上,这只会出现在0000 0000与1000 0000两种情况中。好在我们已先知补码(0000 0000)表示(+/-0)、补码(1000 0000)表示(-128),所以这种担心就显得多余了。
还没人赞这篇日记