目录
二进制运算
补数的概念
证明负数可以用补数表示
在二进制运算计算机中,数值的运算都用二进制表示。
在一个二进制数中,最高有效比特是已编码比特,0是正数,1是负数。
六的二进制文件: 0000 0110
8的二进制文件: 0000 1000
-8的二进制文件: 1000 1000
例如,计算:6 8
00000110
000001000
------------
00001110
结果为0000 1110,即十进制的14。
但是,计算起来,是6(-8 ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。
00000110
10001000
------------
10001110
的结果为1000 1110,即十进制的-14,显然其结果是错误的。
从上面的例子可以看出,使用通常的加法规则进行运算的话,正数和正数相加的结果是正确的,正数和负数相加的结果是错误的。
在计算机中,为了解决将正数与负数相加的问题,用补数表示负数。
在介绍补数的概念补数的概念之前,先介绍一下“型”的概念。
假设当前时针指向8点,准确时间是6点,调整时间有以下两种拨号方法。
一是倒带2小时,8 - 2=6点;
另一个是顺发10小时,810=126=(126 ) % 12=6点;
也就是8 - 2=8 10=6点。
钟表的“模式”是12,减去2和加上10的效果是一样的。 也就是说,2和10相互是补数。
如果两个数互为补数,则它们之和正好等于“模”。 所以,减法也可以转换为加法。
x- Y=X(y的补数)=x )“模”-y ) )。
对于计算机,其概念和方法完全相同。 n比特的计算机,作为n=8,能够表现的最大数为1111 1111。 再加一成为1000000000(9比特),但由于只有8比特,所以最高位比特1自然地丢失,返回到0000000,因此8比特二进制系统的"模式"为2的8次幂. 在这样的系统中,减法问题也是加法问题,只要用对应的补数表示减数就可以了。 将补数用于计算机对数的处理是补数。
求给定数值的补数有以下两种情况。
正数补数与原始代码相同。
负数补数是将原始代码中除符号位外的所有位反转(0变为1,1变为0,符号位保持为1 ),然后加1。
8位计算机负数补数公式:
1111 1111 -负数源代码1=1 0000 0000 -负数源代码=“模”-负数源代码
如上例所示,要计算6(-8 ),请先得到-8的补数,然后对6增加补数。
-8的补数: 1111 0111 1=1111 1000
6附加代码: 000001101111000=11111111110
结果的第一位是1,表示此结果是负数的补数。 与该补数对应的负数是(减去1后取反) )。
首先1:1111 1110 - 1=1111 1101
取反: 1000 0010 (即十进制的-2) ) ) ) ) ) ) ) ) ) )。
在计算机系统中,数值都用补码表示和存储。 因为,通过使用补数,可以将编码比特和数值字段统一地处理。 另外,加法和减法也可以统一处理。 也就是说,加法和减法的运算只能用一种加法电路进行。
证明负数可以用补数证明。 x-y=x(-y )的补数
-Y的补数:“1111 1111 - Y
x-y=x(-y )的补数
=x(1111111-y ) 1
=X - Y 1 0000 0000
=X - Y 0000 0000
=X - Y
在8位计算机上,10000 0000(9位)的最高1必须舍弃。 也就是说,00000000。