相反数的本质
相反数的本质是两数相加等于 0,1 加上 1 的相反数-1 永远等于 0。
二进制中取相反数的公式
对于二进制运算来说减法是通过加上一个负数实现的,所以想要达成两数相加等于 0 的情况一定是通过溢出来实现。两数相加等于 0 可以带入为  
     
      
       
       
         11111111 
        
       
         + 
        
       
         00000001 
        
       
         = 
        
       
         00000000 
        
       
      
        1111 1111 + 0000 0001 = 0000 0000 
       
      
    11111111+00000001=00000000,将  
     
      
       
       
         00000000 
        
       
      
        0000 0000 
       
      
    00000000 用两个相反数  
     
      
       
       
         A 
        
       
      
        A 
       
      
    A 和  
     
      
       
        
        
          A 
         
        
          ′ 
         
        
       
      
        A' 
       
      
    A′ 代替,可以得到公式  
     
      
       
       
         11111111 
        
       
         + 
        
       
         00000001 
        
       
         = 
        
       
         A 
        
       
         + 
        
        
        
          A 
         
        
          ′ 
         
        
       
      
        1111 1111 + 0000 0001 = A + A' 
       
      
    11111111+00000001=A+A′,那么  
     
      
       
        
        
          A 
         
        
          ′ 
         
        
       
         = 
        
       
         11111111 
        
       
         − 
        
       
         A 
        
       
         + 
        
       
         00000001 
        
       
      
        A' = 1111 1111 - A + 0000 0001 
       
      
    A′=11111111−A+00000001。而在二进制中  
      
       
        
        
          11111111 
         
        
          − 
         
        
          A 
         
        
       
         1111 1111 - A 
        
       
     11111111−A 的含义是 A 按位取反,所以推出最终的公式如下。
  
      
       
        
         
         
           A 
          
         
           ′ 
          
         
        
          = 
         
        
          A 
         
        
          按位取反 
         
        
          + 
         
        
          1 
         
        
       
         A' = A按位取反 +1 
        
       
     A′=A按位取反+1
 需要注意两点
- 这里的按位取反与求补码时不同,这里按位取反是需要包含符号位的。
 - 求相反数的运算需要使用补码进行。
 
原码—补码转换的计算过程可以参考这篇文档——原码、反码和补码。
例子
举一个 -1 求相反数的例子。
 
参考资料
补码(为什么按位取反再加一):告诉你一个其实很简单的问题
 二进制的相反数为什么是按位取反加1,补码来源













![[vue3]极速上手](https://img-blog.csdnimg.cn/img_convert/867b7e3b582e326730908a896c481b29.png)





