计算机中的负数是以其补码形式存在的 补码=原码取反+1
一个字节有8补码的最小负数 可以表示的数值范围在 -128+127
用二进制表示也就是 10000000 - 01111111(注意:最高位表示符号)
最高位是1的都是负数 最高位是0的都是正数
-7 原码是 10000111 然后取反(最高位是符合不用取反)得11111000
加一 11111001 那么-7的二进制数就是 11111001
再如 -10 原码是 10001010 取反得 11110101 加一得 11110110
那么-10的二进制数就是 11110110
二进制数是逢二进一 只有01两个数字 没有2
       
  由于原码表示中0的表示形式的不唯一和原码加减运算的不方便,造成实现原码加减运算的硬件比较复杂.为了简化运算 
让符号位也作为数值的一部分参加运算,并使所有的加减运算均以加法运算来代替实现,人们提出了补码表示方法
1 .     


    补码表示的引入是基于模的概念所谓""是指一个计数器的容量,比如钟表以12为一个计数循环,既可以看做以12 
为模.在进行钟表对时时,设当前钟表的时针停在 9 点钟位置,要将时针拔到4点钟.可以采用两种方法一是反时针方向 
拔动指针,使时针后退5个小时,  9 - 5 = 4  ; 另一种是顺时针方向拔动指针,使时针前进7个小时,也能够使时针指向 
4.     这是因为表钟的时间只有  1,2,.....,12  12个刻度,时针指向超过12,将又指向1,2,........,相当于每超 
12,就把12丢掉由于9+7=16,超过了12,因此把12减掉后得到4,  即用 9+7 也同样能够将表钟对准到4点钟这样
对于采用12为模的钟表而言,  9-5 ≡ 9+7 ( mod 12 ) ,称为在模12的条件下,9-5等于9+7.  这里, 7 称为 -5  12 
的补数  7 = [-5] = 12 + (-5) (mod 12) .     这个列子说明,对某一个确定的模而言,当需要减去一个数X 
,
可以用加上 X 对应的负数 -X 的补数 [-X] 补来代替
                对于任意X,在模M的条件下的补数[X],可由下式给出
                           [X] = M + X (mod M) 

根据公式
       
        1. X>=0 ,  M+X大于M,M丢掉,[X]=X,既正数的补数等于其本身
        2. X<0   ,[X]=M+X=M-|X|,既负数的补数等于模与该数绝对值之差
:     求模M=2,二进制数X的补数 
        (1)X=+0.10110101     (2)X=-0.10110101 
:     (1)因为X>=0,把模2丢掉,所以 [X] = 2+X = 0.10110101 (mod 2) 
        (2)因为X<0 ,所以 [X] =2+X 
                               =2-|X| 
                               =10.00000000-.010110101 
                               = 1.01001011(mod 2) 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。