컴퓨터는 1과 0으로 되어있다. 그렇기 때문에 음수를 표현하기 위해서 컴퓨터는 보수법을 사용한다.
보수는 보충해주는 수라는 뜻이다.
컴퓨터는 뺄셈을 하지 못한다.
따라서 -를 해당 숫자의 보수로 만들어 줘서 해당 진법의 배수로 만들어 줘서 맨 왼쪽자리를 없애줘야한다.
이게 뭔소리인지 모르겠지만 예시를 들어보겠습니다.
173이라는 십진법수가 있다고 가정하면 173의 보수는 173과 더해서 1000을 만들어줘야한다.
따라서 173의 보수는 827이 된다. 이를 확인하는 과정은 200 - 173을 통해 확인해 보자
앞서 말한것을 토대로 컴퓨터는 뺄셈을 하지 못한다. 따라서 -부분을 +로 만들어야한다.
200 + 827(173의 보수) = 1027이다. 그리고 맨 왼쪽자리를 없애면 27이 된다.
컴퓨터는 이런식으로 뺄셈을 할 수 없기 때문에 보수를 활용한 덧셈으로 변경해줘야 한다.
하지만 컴퓨터는 이진법을 사용하게 때문에 2의 보수를 사용해보자
2진법에서 2의 보수를 구하는 방법을 알아보자
1001이 있다고 가정하다 1이 있는 자리는 0으로 0이있는 자리는 1로 바꿔준다.
0110 여기서 + 0001을 더해준다
0111이 1001의 보수는 0111이 된다.
확인해보면 1100 - 1001 ==> 1100 + 0111 = 10011 맨 왼쪽자리를 날리면 0011
1100은 십진수로 12 0111은 십진수로 9 0011은 십진수로 3
12 - 9 = 3
마지막으로 음수일 경우 계산을 해보자
1100 - 1110 ==> 1100 + 0010 = 1110
1110"은 보통 2의 보수를 사용하는 이진수에서 -2를 나타내는 방법 중 하나입니다. 이진수에서 가장 왼쪽의 비트는 부호를 나타내고, 나머지 비트들은 숫자를 나타냅니다. 가장 왼쪽 비트가 1이면 음수를 나타내고, 0이면 양수를 나타냅니다.
이진수 "1110"에서 가장 왼쪽 비트가 1이므로 음수를 나타냅니다. 나머지 비트들은 숫자를 나타내므로, 이진수 "1110"은 2의 보수에서 -2를 나타냅니다.
2의 보수는 음수를 표현하는 방법 중 하나로, 해당 숫자의 절댓값을 이진수로 나타낸 후 모든 비트를 반전시킨 다음 1을 더하는 방법입니다. 따라서 2를 이진수로 나타내면 "0010"이 되고, 이를 반전시키면 "1101"이 되며, 여기에 1을 더하면 "1110"이 됩니다.
컴퓨터는 이런식으로 뺄셈을 처리하게 된다.
r진법
r의 보수
r-1의 보수