溢出判断
溢出判断:以下的"出错"就是溢出
(以下讨论的是算术右移或者算术左移的情况下溢出判断)
-
对于正数: 原码、补码、反码 不论左移还是右移都是丢1出错
-
对于负数:
- 原码和正数一样,左移或者右移丢1就出错
- 反码,左移或者右移丢0就出错
- 补码,左移丢0出错,右移丢1出错
个人判断方法:先判断正负,正数就按正的来,丢1出错,如果是负数再判断是原码还是补码或者是反码,
如果是原码左移右移都是丢1溢出,反码左移右移都是丢0溢出,补码是左移丢0溢出,右移丢1溢出。
画一张图来方便记忆

练练手:
(解析,看[x1]原,先判断正负,[x1]原以0开头是正数,左移一位丢0,未溢出。
看[y3]补,以1开头为负数,又是补码,补码右移丢1为溢出,这里显然溢出,其它的都是类似)

本文探讨了在算术右移和左移操作中如何判断溢出,特别是针对正数、负数、原码、反码和补码的不同情况。详细解释了正数和负数在左移和右移时的溢出条件,并提供了记忆方法和实例解析,帮助理解溢出判断的逻辑。
1829

被折叠的 条评论
为什么被折叠?



