Python's integers already use two's complement, but since they have arbitrary precision, the binary representation of negative numbers would have an infinite string of 1s at the start, much like positive numbers have an infinite string of 0s. Since this obviously can't be shown, it is represented with a minus sign instead.
If you want the binary representation for a specific width, you can just use modulo.
>>> bin(-5)
'-0b101'
>>> bin(-5 % (1<<32))
'0b11111111111111111111111111111011'
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…