보수에대하여
이 글은 제가 보수에 대해 공부하면서 배운거를 제가 알아듣기 쉽게 적은 글입니다.
책보고 한게 아니라 틀릴수도 있습니다.
2진법에서 1의 보수는 자릿수가 모두 1인수에서 주어진 2진수를 빼면됨
1111(2)-0101(2) = 1010(2) 0101의 1의 보수 1010
2의 보수는 1의보수 +1 이다 1010 + 0001 -> 1011(2)
헷갈리던거
2진수 음수의 값을 어떻게 알아낼까? 답은 1의보수를 취한후 1을 더하면 나온 값의 절댓값이 구하고자하는 음수의 절댓값이다.
1101(2) <- 값은 몰라도 일단음수
이거의 절댓값을 구하려면
1101(2) ->(1의 보수) 0010(2) ->(1더하기) 0011(2) 즉 3 이였다.
그렇다면 2진수도 수학이기 때문에 1101(2) 과 (2진수3)0011(2) 을 더하면 0이 나와야 될꺼다.
더하면 10000(2) 이 나온다 이경우 자리수를 넘긴 끝에 1을 없애야 한다. 그럼 0 이 나온다.
수학적으로 절댓값이 같은 두 양음수를 더하면 0이 나와야 되는데 진짜 나왔다.
2진수의 뺄샘방법
2의 보수를 취하는 방법과
1의 보수를 취하는 방법이 있다.
1의 보수는 일단 빼는 숫자에 1의 보수를 취한후 자릿수가 올라갔다면(답이 양수가 나온경우 자연스럽게 이렇게 됨) 올라간거 없애고 값에 1을 더하면 끝 , 자릿수가 올라가지 않은경우(답이 음수) 나온 값에 1의 보수를 다시 취하고 -를 붙이면 답이다.
(7)111(2) - (6)110(2) = 111 + 001 = 1000(2) 이렇게 자릿수가 하나 올라간 경우에는 올라간 1은 없에고 나온 2진수값에 1일 더하면 된다 1000-> 000 -> 001(2) 즉 10진수로 바꾸면 1인 값이 나온다 7 - 6 의 값이 나왔다. 옳다
(4)100(2) - (6)110(2) = 100 + 001 = 101(2) 101-> 010 -010(2) == -2(10) 4 - 6 = -2
2의보수를 이용하면 뺄 값에 2의 보수를 취한후 자리 올림이 생긴 경우 자리올린 값을 제외한 부분이 결과이고
올림 값이 없으면 나온 값에 다시 2의 보수를 취해주고 - 를 붙이면 된다.
2의 보수
111(2) - 110(2) = 111 + 010 = 1001(2) -> 001(2) == 1
100(2) - 110(2) = 100 + 010 -> 110 -> 010 -> -010(2) == -2