原码、反码和补码的理解
2013-10-01 19:49
260 查看
概述
对于原码、反码和补码有了一些理解,分享给大家真值
正、负号加某进制数绝对值的形式成为真值例:X = +1011 Y = -1011
机器数
符号数码化的数称为机器数机器数有四种表示方法:原码、补码、反码和移码。下面的描述添加为机器字长为8位二进制
原码
最高位表示真值符号:0正,1负,且符号位不参与运算,计算机要实现原码加(擅长)和减的运算器注意:1000
0000和0000 0000都表示0,所以,取值范围为:[-127,127]
反码
最高位表示真值符号:0正,1负,且符号位不参与运算,计算机只需实现反码的加运算器,但需设计反码符号位和其它位分开的逻辑注意:1000
0000和0000 0000都表示0,所以,取值范围为:[-127,127]
补码
最高位表示真值符号:0正,1负,符号位参与运算(“模”的概念)+0和-0的表示:
0000 0000; -128的表示:10000000
补码的表示范围[-128,127]的解释
补码使计算机对所有数据的表示唯一化,+0和-0表示都用的是高位为0的128中排序中的同一种排序(00000000),所以,剩下的127中排序最大可以表示正整数为127,又因最高位为1的排序有128种,所以,可表示的最小负数为-128原码、反码和补码之间的转换
正数:三者相同负数:原码对应的反码为,原码各位取反(除符号位);
反码对应的补码为,反码+1;
补码对应的反码为,补码各位取反(除符号位)+1;
注意:由于原码和反码根本就不存在-128的表示,所以,当说到-128时,就不能有这种转换,至于计算机是如何将-128真值转换为补码,或者说为,计算机是如何将真值转换为补码的?我们无序了解,这个就是为什么上面没有写反码和补码的得到方式(我们通常错误的理解得到方式是其三者的转换关系),可能你会说,-128补码我只能死记硬背了吗?其实不然,只要我们求出补码表示-1的8位二进制的排列方式,我们就可以推出-128的补码,不明白知道-1的补码为什么就可以推出-128的补码的,可以看看上面“补码的表示范围[-128,127]的解释”的描述
总结
对于原码、反码和补码的产生的原因,以及原码、反码和补码各自的内容,以及之间的关系上面都以讲出,认真看的话,可以帮助你理解一些内容。相关文章推荐
- 个人对原码-反码-补码的理解
- 原码,反码,补码的理解
- 对计算机的原码,反码,补码的理解:
- 原码、反码、补码的理解
- 原码、反码与补码——谈谈我的理解
- 计算机码制--深入理解 原码、反码、补码
- 理解原码、反码和补码-------带例子详解
- 原码、反码和补码理解
- 关于反码、补码、原码的一些应用于理解
- 关于原码、反码、补码的一些理解
- 理解原码,反码,补码转换
- 深度理解 原码, 反码, 补码
- 原码、反码、补码的进一步理解
- 详解原码、反码、补码——深入理解补码
- 原码,反码,补码,个人理解
- 【总结】正确理解原码、移码、反码与补码
- 原码反码补码移码的理解及C语言验证
- 通过位运算理解原码、反码和补码
- 再度理解原码、反码、补码
- 详解原码、反码、补码——深入理解补码