계속 누가 울부 짖어서 최대한 쉽게 설명해볼게
그 전에 첫 번째 비트가 LSB(가장 오른쪽에 위치한 비트)를 뜻하는거라고 약속하자.

쉽게 말하면 2의 보수(2's complement)라는게 각 자리(비트)를 더해서 0으로 만들도록 보충해주는 수를 말하는거야
예를 들면 4비트 2진수 0110의 각 자리수를 더해서 0000으로 만들어주는 비트는 1010이지

맨 오른쪽 비트(LSB)부터 차례대로 계산해보면
0 + 0 = 0
1 + 1 = 0 / 올림수(carry)발생
1 + 0 + 1(carry) = 0 / carry 발생
0 + 1 + 1(carry) = 0 / carry 발생
그리고 새로 올라운 carry가 5번째 비트를 1로 채우게 되지

이게 한정된 비트수를 나타내는 곳에서 큰 의미가 있는데

예를 들어 3 비트  나타낼 수 있는 시스템에서 010의 2의 보수는 110이 돼

010 +110을 더하면 1000이 되지. 즉, 세 비트가 모두 0이되고 네 번째 비트가 1이되지
그런데 이 시스템은 3 비트낼 수 있다고 그랬지? 그래서 맨 왼쪽 비트 1은 날아가고 000만 나타낼 수 있어
네 번째 비트 1을 표기할 수 없어서 0을 나타내게 된다는게 핵심이야

정리하자면 한정된 자리수를 가지고, 기수(진법)가 N일 때, AA의 N의 보수를 더하면 0이 된다는거지, 이걸 폰 노이만이 N의 보수를 음수로 표기하면

절대값이 같고 부호가 다른 반수 관계에 있는 정수(예를 들어 3과 -3)를 더하면 0이 되는 계산을 구현할 수 있겠다고 생각해서 2의 보수를 음수로 표기하게 된거야

마지막으로 팁 하나 적어줄게
2의 보수로 표기된 음수 값을 빠르게 읽는 법을 알려줄게
부호 있는(signed) 8비트 정수에서 음수 1111 1001의 값을 바로 읽으려면 0이 있는 자릿수를 더해서 계산한 뒤 +1을 하고 -를 붙이면 돼
2^1의 자리가 0이니까 2
2^2의 자리가 0이니까 4
더하면 6이지? +1하면 7
여기에 - 붙여버려 그러면 -7이 돼