简答题(5.0分)1.已知X=85,Y=76(均为十进制[1]),设字长为8,求[-85]补,[-76]补。并利用补码的加、减规则计算[X-Y]补,[-X+Y]补,[-X-Y]补。要求写出计算过程,并判断是否溢出。
题目解答
答案
解析
本题主要考查补码的计算以及补码的加、减规则,同时涉及溢出判断。解题思路如下:
- 首先,将十进制数转换为二进制数,再根据补码的计算方法求出负数的补码。
- 然后,利用补码的加、减规则进行计算,即$[X - Y]_{补}=[X]_{补}+[-Y]_{补}$,$[-X + Y]_{补}=[-X]_{补}+[Y]_{补}$,$[-X - Y]_{补}=[-X]_{补}+[-Y]_{补}$。
- 最后,根据补码运算结果的符号位判断是否溢出。若运算结果的符号位与预期结果的符号位不一致,则发生溢出。
1. 求$[-85]_{补}$和$[-76]_{补}$
- 将十进制数转换为二进制数:
- $85$转换为二进制:$85 = 64 + 16 + 4 + 1=2^6 + 2^4 + 2^2 + 2^0$,所以$[85]_{二进制}=1010101$,字长为$8$,则$[85]_{原}=01010101$。
- $76$转换为二进制:$76 = 64 + 8 + 4=2^6 + 2^3 + 2^2$,所以$[76]_{二进制}=1001100$,字长为$8$,则$[76]_{原}=01001100$。
- 求负数的补码:
- 对于负数,补码是其原码除符号位外取反加$1$。
- $[-85]_{原}=11010101$,除符号位外取反得$10101010$,再加$1$,则$[-85]_{补}=10101011$。
- $[-76]_{原}=11001100$,除符号位外取反得$10110011$,再加$1$,则$[-76]_{补}=10110100$。
2. 计算$[X - Y]_{补}$
根据补码的加、减规则$[X - Y]_{补}=[X]_{补}+[-Y]_{补}$,已知$[X]_{补}=[85]_{补}=01010101$,$[-Y]_{补}=[-76]_{补}=10110100$,则:
$\begin{align*}[X - Y]_{补}&=[85]_{补}+[-76]_{补}\\&=01010101 + 10110100\\&=(0 + 1)\times2^7+(1 + 0)\times2^6+(0 + 1)\times2^5+(1 + 1)\times2^4+(0 + 0)\times2^3+(1 + 1)\times2^2+(0 + 0)\times2^1+(1 + 0)\times2^0\\&=1\times2^7+1\times2^6+1\times2^5+0\times2^4+0\times2^3+0\times2^2+0\times2^1+1\times2^0\\&=00001001\end{align*}$
结果的符号位为$0$,表示正数,$X - Y=85 - 76 = 9$,结果正确,未溢出。
3. 计算$[-X + Y]_{补}$
根据补码的加、减规则$[-X + Y]_{补}=[-X]_{补}+[Y]_{补}$,已知$[-X]_{补}=[-85]_{补}=10101011$,$[Y]_{补}=[76]_{补}=01001100$,则:
$\begin{align*}[-X + Y]_{补}&=[-85]_{补}+[76]_{补}\\&=10101011 + 01001100\\&=(1 + 0)\times2^7+(0 + 1)\times2^6+(1 + 0)\times2^5+(0 + 0)\times2^4+(1 + 1)\times2^3+(0 + 1)\times2^2+(1 + 0)\times2^1+(1 + 0)\times2^0\\&=1\times2^7+1\times2^6+1\times2^5+0\times2^4+1\times2^3+1\times2^2+1\times2^1+1\times2^0\\&=11110111\end{align*}$
结果的符号位为$1$,表示负数,$-X + Y=-85 + 76=-9$,结果正确,未溢出。
4. 计算$[-X - Y]_{补}$
根据补码的加、减规则$[-X - Y]_{补}=[-X]_{补}+[-Y]_{补}$,已知$[-X]_{补}=[-85]_{补}=10101011$,$[-Y]_{补}=[-76]_{补}=10110100$,则:
$\begin{align*}[-X - Y]_{补}&=[-85]_{补}+[-76]_{补}\\&=10101011 + 10110100\\&=(1 + 1)\times2^7+(0 + 0)\times2^6+(1 + 1)\times2^5+(0 + 1)\times2^4+(1 + 0)\times2^3+(0 + 1)\times2^2+(1 + 0)\times2^1+(1 + 0)\times2^0\\&=0\times2^7+1\times2^6+0\times2^5+1\times2^4+1\times2^3+1\times2^2+1\times2^1+1\times2^0\\&=01011111\end{align*}$
两个负数相加,结果的符号位由$1$变为$0$,与预期结果(负数)不一致,发生溢出。