9's complement正十进制数计算规则矛盾:教材与视频教程说法不一求解
9's complement(9补码)表述矛盾的原因解释
这个矛盾本质是两种说法针对的是9补码的不同应用场景,不存在对错:
- 第一种是带符号9补码系统的数表示规则
《Foundation of Computer Science》里的表述,针对的是带符号9补码系统中正数的存储表示形式:在这类系统里,会预留最高位作为符号标识,规定正数的9补码直接等于它本身的原码。以3位十进制数的场景为例,正数的表示范围是0499,对应+0+499,因此+234的9补码表示就是
234。
- 第二种是9补码参与减法运算的操作规则
YouTube教程里的计算方式,针对的是用9补码实现减法运算的中间操作:当我们需要把减法
A - B转换为加法运算时,规则是取B的绝对值计算9补码(全9的同位数减去B的绝对值),再和A相加后处理进位。此时计算得到的765是运算过程中使用的补码操作数,不是带符号系统里+234的表示形式。
场景区分示例
以3位十进制下计算234 - 123为例:
- 两个数的9补码存储表示分别为:+234对应
234,-123对应999-123=876 - 减法转加法运算:
234 + 876 = 1110 - 处理进位:将最高位的进位1加到剩余三位上,得到
110 + 1 = 111,就是最终的正确结果+111。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

