2의 보수에서 4비트의 정수 0101과 1011의 뺄셈

Useful·2023년 4월 2일
0

나만의 노트

목록 보기
1/3

;;

일단 바보 같은 방법으로 풀었다. 한번 봅시다




먼저 10진수로 바꿔서 계산 후, 그걸 2진수로 다시 변환함.

0101(2) = 5
1011(2) = 11

5에서 11을 빼면 -6(10) 이라는 10진수 결과를 얻을 수 있음.


그리고 이제 이걸 2진수로 변환해보자

-6을 2진수로 변환하면 -0110(2)
-0110(2)의 1의 보수는 1001(2)
우리가 구해야 할건 2의 보수니까 여기서 1을 더해준다면 ?
1001(2)

  1001
+    1
-------
  1010

여기서 잠깐, 답은 맞지만 풀이는 틀렸다.

  1. 2진수 연산을 해야 하는데 10진수 연산을 해서 그걸 2진수로 변환을 했다.
  2. 아무런 문제가 없이 답은 정확하게 나온 경우입니다.
  3. but, 보통은 10진 연산은 검산을 하기 위해서 사용함........

우리... 다시 할까요?

2의 보수 4비트의 정수 0101과 1011의 뺄셈

양수는 보수로 변환을 할 필요가 없으니까 그대로 0101을 사용합니다.

음수는 보수로 변환을 해야하죠. 1011의 1의 보수는 0100이 되고, 2의 보수는 0101이 됩니다.

그러면 0101 + 0101이 된다!

  0101
+ 0101
-------
  1010

추가 설명(나도 이해못함)

  • 원래 자리올림수가 발생해야 하는데 자리올림수가 발생하지 않았으므로
    음수(오버플로)이고, 해당 수의 2의 보수를 취하면 0110이므로 음수 0110이 됩니다.

  • 2진수 연산에서 자리올림수가 0인데 자리올림수 다음 캐리값이 1인 경우 오버플로가 발생한 경우입니다. 주로 음수가 결과로 나올 때 발생합니다.

  • 2진수 연산에서 자리올림수가 1인데 자리올림수 다음 캐리값이 0인 경우 언더플로가 발생한 경우입니다. 주로 음수들 중에서도 표현범위를 넘어서는 경우에 발생합니다. (음수와 음수의 덧셈)


밑에 링크 타고 들어가서 추가 설명 보세요... 나도 이해가 될까말까..함





참고 자료 :
(https://kin.naver.com/qna/detail.naverd1id=11&dirId=1113&docId=417587761&qb=MuydmCDrs7TsiJgg67qE7IWI&enc=utf8§ion=kin.ext&rank=1&search_sort=0&spq=0)

profile
1 commit = 1 life

0개의 댓글