原码反码补码,原码反码补码转换

为什么会有原码、反码和补码?

在计算机内,定点数有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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。