您的位置:首页 > 其它

原码、反码和补码的理解

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]的解释”的描述

总结

对于原码、反码和补码的产生的原因,以及原码、反码和补码各自的内容,以及之间的关系上面都以讲出,认真看的话,可以帮助你理解一些内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: