补码“模”概念的引入、负数补码的实质、以及补码和真值之间的关系所揭示的补码符号位所具有的数学特征,无不体现了补码在计算机中表示数值型数据的优势,和原码、反码等相比可表现在如下方面:
(1)解决了符号的表示的问题。
(2)可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计。
(3)在计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易。
在计算机系统中,数据的表示与存储都是以0或1的形式,而表示这些0或1,我们可以将外部数据通过数字电路进行编码,对于有符号数,在计算机系统中有三种编码,即我们通常所了解的编码、原码、反码、补码。
正数原码 = 0 + 正数绝对值,负数原码 = 1 + 负数绝对值。
正数反码 = 正数原码,负数反码 = 负数原码符号位的1不变,绝对值部分按位取反。
正整数的补码是其二进制表示,与原码相同。
例:+9的补码是。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是,然而在16位二进制补码表示中,就是0001。以下都使用8位2进制来表示。
· 每个回答都超有意思的
假设当前时针指向8点,准确的时间是6点,调整时间有两种方法:一种是拨回2个小时,即8-2=6;另一种是直拨10小时,8+10=12+6=6,即8-2=8+10=8+12-2(Mod 12)。
在模数12的系统中,加10等于减2,所以任何减2的运算都可以用加10来代替。如果通式可以表示为:a-b=a-b+mod=a+mod-b。
补码表示将符号位和值位统一起来,使符号位和值位可以直接一起参与运算,也为以后乘数除法器等运算装置的设计提供了很大的方便。
补语的介绍与当时计算机设计的背景有关。不仅要考虑所表示的数字的类型(十进制、整数、实数和复数)、数值范围和精度,而且还要考虑数据存储和处理所需的硬件成本。