At a basic level, everything on a computer is represented by binary numbers composes of 1s and 0s. This presents a challenge: how to represent negative numbers. There are a few solutions, one of which is one's complement. One's complement solves the problem of representing negative numbers by reserving the leading bit of a binary number to be the sign bit, to signal whether the following string is negative or positive. It does this in combination with flipping all the bits of a negative number (taking the binary complement), which allows for a binary representation that, if you have a binary string with N bits, can represent the following range:This is the same number of bits that signed magnitude can represent, but with the added benefit of lending itself more easily to arithmetic: adding two opposite one's complement binary numbers will always yield a string of all 1s.