为什么会有原码、反码和补码?
在计算机内,定点数有3种表示法:原码、反码和补码
所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
正数的反码和补码都是和原码相同
负数案例:
负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011] 反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011] 补=11111101
一个数和它的补码是可逆的。
为什么有了原码还要设计反码和补码?
计算机只会加法不会减法!!!
计算机只会加法不会减法!!!
计算机只会加法不会减法!!!
所以两个数的减法可以看成一个正数加一个负数,如果运算时将符号位和数据位隔开单独运算,运算规则是十分复杂的。为了让减法计算更简单我们希望在计算时连同符号位一起运算。于是便有了反码,比如下面的运算
1-1=【00000001】+【11111110】=【11111111】原码为【10000000】代表-0,如果用反码运算这里0产生两个结果
当然你算其他的减法也会出错
于是便有了补码
1-1=【00000001】+【11111111】=【00000000】完美解决了上面的问题
再来试一下
5-3=【00000101】+【11111101】=【00000010】
本文来自投稿,不代表商川网立场,如若转载,请注明出处:http://www.sclgvs.com/peixun/27388.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。