title: Python - Most effective way to implement two's complement?
body: <p>Two's complement is when you inverse bits then add a binary 1 digit. So for example...</p>
  
  <pre><code>0011001
  apply two's complement
  1. inverse the bits, 1100110
  2. add a binary digit, 1100110 + 1 = 1100111
  </code></pre>
  
  <p>Another example to show overflow situation...</p>
  
  <pre><code>1001100
  apply two's complement
  1. inverse the bits, 0110011
  2. add a binary digit, 0110011 + 1 = 0110100
  </code></pre>
  
  <p>What would be the best way to implement this in python. So far I have this code, but I would like it to be more efficient because I'm using this method too much.</p>
  
  <pre><code>def toTwosComplement(binarySequence):
      convertedSequence = [0] * len(binarySequence)
      carryBit = 1
      # INVERT THE BITS
      for i in range(0, len(binarySequence)):
          if binarySequence[i] == '0':
              convertedSequence[i] = 1
          else:
              convertedSequence[i] = 0
  
      # ADD BINARY DIGIT 1
  
      if convertedSequence[-1] == 0: #if last digit is 0, just add the 1 then there's no carry bit so return
              convertedSequence[-1] = 1
              return ''.join(str(x) for x in convertedSequence)
  
      for bit in range(0, len(binarySequence)):
          if carryBit == 0:
              break
          index = len(binarySequence) - bit - 1
          if convertedSequence[index] == 1:
              convertedSequence[index] = 0
              carryBit = 1
          else:
              convertedSequence[index] = 1
              carryBit = 0
  
      return ''.join(str(x) for x in convertedSequence)
  
  if __name__ == '__main__':
      print toTwosComplement('00110010101101001')
  </code></pre>
  
  <p>My question is, can I optimise this algorithm because at the moment it is running too slow for the amount of binary code I have to run it through.</p>