漫话:为什么计算机用补码存储数据?
补码运算时,其符号位与数值一起参加运算。补码的符号位相加后,如果有进位出现,则进位被舍弃。用反码运算,其运算结果亦为补码。在转换成原码时,如果是正数,其补码就是原码;如果是负数,该补码的补码就是其原码。 我们再来用补码的方式,来计算下10 - 10 : 01010(补) + 10110(补) = 0 0000 (补),因为符号位是0,表示正数,所以他对应的原码也是0 0000(原),则十进制为0。 有了补码,0的表达方式就唯一了,如果是8位的话,那么就是固定的0000 0000。 如果使用原码或者反码,8位的原码或者反码能表示的最小数字是-127,而使用补码,能表示的最小数字是-128。 可见,使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数。这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。 使用补码的原因 通过以上介绍,我们知道了原码、反码和补码的一些知识,我们尝试着总结下为什么计算机中会最终选择补码来进行存储和计算数字。 1、计算机的运算器为了实现简单,倾向于在运算过程中将减法转换成加法,统一使用加法运算器进行计算。想要把减法转化成加法运算,就需要在运算时带着符号一起运算,而反码和补码可以带符号位一起运算,也就方便了将减法转换为加法。 2、采用补码,可以解决编码中有+0和-0两种表示0的方式。 3、补码表示的数字范围要比原码和反码大。如8位2进制,使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |