模与计算机补码介绍

您所在的位置:网站首页 取模算法叫啥名字 模与计算机补码介绍

模与计算机补码介绍

2024-07-16 13:57| 来源: 网络整理| 查看: 265

本文主要介绍模与计算机补码的相关知识,并介绍两者之间的联系。

1 计算机补码

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均包含符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”;而数值位,三种表示方法各不相同。

在计算机系统中,数值一律用补码来表示和存储。原因如下:

使用补码,可以将符号位和数值域统一处理;加法和减法也可以统一处理;补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

补码的特性如下:

一个负整数(或原码)与其补数(或补码)相加,和为模;对一个整数的补码再求补码,等于该整数自身;补码的正零与负零表示方法相同。 2 模

模的概念可以帮助理解补数和补码。

模是指一个计量系统(如时钟)的计数范围。计算机也可以看成一个计量机器,它也有一个计量范围,即存在一个模。

对于时钟来说,其计量范围是0~11,模为12。

n 位的计算机的计量范围是0~2^{n}-1,模为2^{n}

模,实质上是计量器产生溢出的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。

例如:假设当前时针指向10点,而准确的时间是6点,那么调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6。

在上面的示例中,以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对模而言,8和4互为补数。实际上在以12为模的系统中,11和1,10和2,9和3,7和5,6和6也都有这个特性,这些数字共同的特点是两者相加等于模。

对于计算机而言,其概念和方法也完全一样。n位计算机,假设n=8,所能表示的最大数是11111111,若再加1成为100000000(9位),但因只有8位,所以最高位1丢失,又回到了00000000,所以8位二进制系统的模为2^{8}。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示,转化为加法相加其补数即可。

把补数用到计算机对数值的处理上,就是补码。

3 补码总结

补码只是一种相对合理的编码方案,这个方案在包含负数的机器中解决了以下三个问题:

3.1 数的表示

在数的表示上,通过人为的定义来消除编码映射的不唯一性,对转换后的10000000强制认定为-128。当然对原码和反码也可以做这种强制认定。那为什么原码和反码没有流行起来呢?原码和反码没有流行起来,是因为在数的运算上对符号位的处理无法用当时已有的机器物理设计来实现。由于原码和反码在编码时采用了硬性的人工设计,这种设计在数理上无法自动的通过模来实现对符号位的自动处理,符号位必须人工处理,必须对机器加入新的物理部件来专门处理符号位,这加大了机器设计难度,加大的机器成本,不到万不得已,不走这条路。

3.2 数的运算

设计补码时,有意识的引用了模运算在数理上对符号位的自动处理,利用模的自动丢弃实现了符号位的自然处理,仅仅通过编码的改变就可以在不更改机器物理架构的基础上完成的预期的要求,所以补码沿用至今。

3.3 自身逻辑意义的完整性

补码这个编码方案要解决的是如何在机器中表示负数,其本质意义为用一个正数来表示这个正数对应的负数。所谓-20的补码是指:如何在机器中用补码形式表示-20。具体过程是这样的:将20的二进制形式(00010100)直接写出,然后所有位取反变成11101011,再加1变成了11101100。最简单的补码转换方式,不必去理会转换过程中的符号位,只关注转换前和最终转换后的符号位就行了。

那么对11101100求出其补码又具有什么现实含义呢?对一个数求补,逻辑过程是对这个数的所有的二进制位按位取反再加1。现实含义是求出这个数对应的负数形式。对11101100求补就是求出这个数对应的负数形式,直接操作下11101100,先所有位取反00010011,再加上1就成了00010100。对11101100求出其补码的含义:11101100按照现行补码码制表示的有符号数是-20,对于-20求补就是求出其对应的负数-(-20),现实中-(-20)是+20,那么求补运算的结果符合现实情况吗,00010100转换成有符号数正是+20,这就说明了补码自身逻辑意义是完整的,是不会自相矛盾的。

最后,补码的总前提是机器数,不要忘了机器数的符号位含义,最高位为“0”表示正数,最高位为“1”表示负数,而最高位是指机器字长的最左边一位。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3