게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
보수의 음수표현!?
게시물ID : computer_115328짧은주소 복사하기
작성자 : 120%
추천 : 0
조회수 : 1734회
댓글수 : 4개
등록시간 : 2013/09/29 04:28:20
시나공 2-42 page 에 있는 보수를 이용한 뺄셈 공부중인데

22 - 3 = 19 이거는 이해가 되는데

역으로 3 - 22 = -19 이 표현을 어떻게 해야하는지 의문이 풀리지가 않아요 ㅠ

일단 22 -3  = 19 는

22의 2진표현 10110

3의 2진표현 00011 (원래는 11 이지만 자리수 맞추서)

00011의 보수는 11100 여기에 2의 보수는 +1 더해서

11101

10110 + 11101 = 10011 

2*4 + 2*1 + 2*0 = 19
16 + 4 + 1 = 19
라는 식이 나오는데 

이거는 이해가 가는데 역으로 하면 
19의 의 음수표현 01100 이 되는건가요?
이거는 10진으로 13인데??
앞자리가 0은 + 이고 1은 - 라는데

인터넷 검색해보니까 다 8자리로 표현하더라구요

그러면 1111 0011 이 -19라는 건가요??
그냥 19는 10011 인데??

아 이해안돼ㅠ

음수는 어떻게 표현하죠ㅠ
꼬릿말 보기
전체 추천리스트 보기
120%
2013-09-29 04:36:24추천 0
1111 0011은 10진으로 243이란 어마어마한 수가 나오는데 ㅠ
댓글 0개 ▲
2013-09-29 04:53:56추천 0
부호가 있는 정수형일 경우 맨 앞 1 비트를 부호 비트로 사용합니다.
c언어에서 1byte 자료형인 char를 예로 들면 8 비트 중 맨 앞의 1비트가 1일 경우 보수 처리를 해서 값을 구합니다.
unsigned 자료형의 경우엔 부호 비트없이 전체를 써서 2배 정도의 양수 표현이 가능하고요.
댓글 0개 ▲
2013-09-29 05:53:45추천 0
늦으시간인데 내일 답변 보시려나 ^^

아무튼 좀더 정확히 말하자면 22는 10110이 맞을수도있고 아닐수도있습니다.
이게 몇비트(or바이트)를 사용하냐에 따라 달라지는 문제이기 때문입니다.
즉, 22를 5비트로 표현하고자 한다면 부호비트를 포함하여 6비트가 필요하기 때문이죠. (6비트를 2의 보수로 표현하면 -32 에서+31까지 표현가능합니다.)

그리고 컴퓨터의 경우는 음수의 표현으로 2의 보수를 사용합니다. 원리는 생략하고 결과부터 말하자면 덧셈(일반 2인수나 2의보수는 양의 비트표현이 같기 떄문에)  이외의 연산(-, *, /)에서는 2의보수가 연산하기 편하기 때문이죠.
즉 -를 예로들어보면
2-6(10진표현) ------(use 5bit)----> 0 0010 - 0 0110 이고 2의보수로 표현해서 0 0010 + 1 1010 = 1 1100 이 됩니다. 즉 2의 보수로 읽으면 -4가 되는것이죠!
하지만 그냥 2진수로 사용할경우 (0 0010 - 0 0110) 일반 뺄셈에서 실제 2에서는 6을 못빼므로 10의 자리에서 값을 빌려와 계산하는 복잡합 연산을 수행해야 합니다.
그래서 2의 보수를 사용하는겁니다.

어.. 저도 잠이와서 주저리 주저리 두서가 없는듯 말했는데요.
즉.. 책에서는 몇 비트라고 제한을 두었지만... 실제는 선언하는 자료형에 따라 비트수와 MSB(~부호비트)의 역활이 달라지게 됩니다. 고로 19의 표현은 몇비트를 사용하냐에 따라 그 값이 달라질 수 있다는 것이죠.

그리고 여담이지만 컴퓨터에서는 실제 연산에 있어서 MSB에 발생하는 캐리를 통하여 오버플로우와 같은 오류도 잡도록 설계되어 있어서 잘 작동이 되는거랍니다. (물론 비트수를 넘어가면 노답)
댓글 0개 ▲
120%
2013-09-29 10:33:15추천 0
이제 일어나서 댓글 확인 했네여

아 답해주셔서 너므 고맙습니다.

근데 아직도 헛갈리는게 함정;;

좀 더 공부해봐야겠어요.

오늘 롤드컵은 못 보겠군 ㅡㅡ
댓글 0개 ▲
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호