此文章参考链接入口
1、原码
纠正一点我长期以来的错误认知。
八位二进制数的范围为[-127,127],原因是最高位是符号位(0为)并不参与计算
[1111 1111 , 0111 1111]
2、反码
正数的反码是其本身,例如:01010111的反码为 01010111
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 例如:11010111的反码是10101000
3、补码
正数的补码就是其本身,例如:01010111的补码为 01010111
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
例如:11010111的反码为 10101001
说完这样,再顺便记下减法的操作,在计算机中并不存在减法,当作减法时,我们把减数转换为补码再相加。举个栗子:
(1)8-5=[00001000]原码 +[1000 0101]原码 =[0000 1000]补码+[ 1111 1011 ]补码==[0000 0011]补码
在此计算出的结果我们需要对得出的八位二进制数取补码,那才是最终结果,3
(2)6-8=[0000 0110 ]补码+[1111 1000]补码=[1111 1110]原码=[1000 0010]原码
结果为(-2).
本文纠正了关于八位二进制数范围的传统误解,并详细讲解了反码和补码的概念,通过实例说明如何在计算机中实现减法操作。重点在于正负数补码计算方法及其在实际编程中的应用。
2687

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



