컴공 일기253
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. C를 한 번이라도 배워보셨던 분은 한번 풀어보셔도 괜찮아 보이네요.
int main()
{
unsigned int num1 = -1;
unsigned char num2 = -1;
printf(“%d %d”, num1, num2);
}
정답은 -1 255가 됩니다.
서식지정자 %d의 작동 메커니즘과 부호 비트에 관해 어느 정도 상세히 알아야 풀 수 있는 문제입니다.
unsigned int는 기본적으로 부호비트가 없는 32비트이고 부호화 2의 보수법에 의거해 2진수로 나타내면
num1 = 1111…11((32개)가 됩니다. 다시 말해 실질적으로 num1에 들어가는 값은 -1이 아닙니다.
-1을 부호화 2의 보수법에 의거해 2진수로 나타내면 1111….1(32개)인데, unsigned int라는 형에 의해 마지막 1이 부호비트로 해석되지 않아 2^32-1이 최종적인 값으로 num1에 대입됩니다.
마찬가지로 unsigned char는 8비트이므로 num2 = 111..1(8개) = 255가 되겠지요.
여기까지 생각한다면 결괏값은 2^32-1 255가 되어야 할 것 같지만, 함정이 하나 더 있습니다.
서식지정자 %d의 메카니즘.
%d라는 서식지정자는 32비트 2진수를 10진수(decimal)로 재해석해서 콘솔에 출력하라는 의미입니다.
그런데, 여기서 %d에서는 부호비트를 적용하게 되지요.
즉 1111…1(32개) = -1이 되어 출력됩니다.
그렇다면 8비트짜리는요? 32비트 10진수를 출력해야 하는데.. 24비트가 부족하게 되지요. 그렇다면 형식에 24비트를 채워야 합니다. 어떤 방식으로 채워야 할까요? 기존의 8비트짜리 변수가 음수라면 1을 채우고, 양수라면 0을 채웁니다.
111..1(8개) = 255이고, 이 자체가 양수로 평가되므로 %d 서식지정자에 의해 000…011111111이 num2에 해당하게 됩니다. 마지막 비트에 해당하는 부호비트가 0이므로, 255가 그대로 출력되게 됩니다.
아주 간단한 예제지만, 컴퓨터 구조를 꽤 정확하게 알고 있어야 도출할 수 있는 예제가 되겠군요.
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
2014학년도 6월 모의평가 28번이렇게 번호에만 줄 그어져있는거는 뭔가요?38....
-
[박주혁x초성민] 리듬농구 오프라인시행 공지입니다. 33
네, 오르비클래스 수학강사 박주혁t입니다. 다들 아시죠? ^^ 8.21(일)은,...
-
작년 오르비큐 이후로 공짜치킨은 오랜만이네요 ㅎㅎ 선생님 덕분에 불금을 치킨과함께...
-
초성민샘 분신술 2
다비오샘 자리에 초성민샘이 있네요 (모바일기준입니다ㅋㅋㅋ) 다비오샘 런칭 축하드려요^^
-
[초성민수학] 재수생(N수생)들에게 전해 줄 규칙 49
재수생(n수)들에게 전해 줄 규칙. 초성민 수학샘입니다. 오늘은 간만에 잔소리...
-
A-YO 초성민수학샘입니다. 겁나 춥고 따스하고 반복되는 생활속에 나는 행복을...
-
뜬금 오목인증 16
뜰사람
-
안녕하세요 초성민 수학선생님입니다. 너무나 오랜만에 나타났죠?? 숨마쿰 강의찍느라...
-
촬영한거 날라갔대요. 촬영장까지 왕복 2시간 반거리이구... 4시간넘도록...
-
인증. 빨리 반응해줘여 (모를까봐 남자고 여기 선생임..) 24
예전에 과외하던시절. 풋풋 ★.★
-
초성민수학샘입니다. 1월이 되면서 새 다짐을 한 친구가 많을 것이라 생각하고...
-
[초성민수학] 1월 3일 공개특강 슬쩍보기 & 대면상담. 18
안녕하세요 초성민 수학샘입니다.!반갑습니다. 인강준비,현강준비,책작업 등 모든...
-
인강 오픈했당 28
오티라도 보ㅏ주세요 (-- ) 숨마쿰라우데 미적분2 수학2 부터 오픈합니다....
-
[초성민] 인강 ! 공개특강 ! 대면상담 ! 현강 ! 헥헥 44
안녕하세요. 초성민 수학샘입니다. 반갑습니다. (글 다시올리는중 ...ㅠㅠㅠ) 이제...
-
[오르비교대 초성민] 심층대면상담. 짧고 굵게 갑니다.(무료) 32
'개정수학' 칼럼 및 영상 ; http://orbi.kr/0007163213 . ....
-
짠! 오랜만입니다.! 초성민 수학선생님 입니다. ‘기’ 모았다가 칼럼을 쓰는...
-
[초성민수학-오르비1관] 공개특강 & 고민이 있을때. 25
안녕하세요 초성민 수학샘입니다. 오늘은 PDF없이 글을 써봅니다. 공개특강 일정...
-
하아 헬스하고 와서 너무힘들다.현재 샘은 아는 친구와 노예를 걸고 서로 몸짱내기를...
-
[초성민수학] 발빠른 2016학년도 수능 수학시험 고찰. 34
이번 수능 문제에 대한 질문 => 댓글이나 쪽지 개정수학과 현재수학의 차이궁금한...
-
초성민 수학샘입니다. 와 어느덧 10월 중순이 지났네요.시간은 겁나 빨리가고 저는...
-
기출문제집 어떻게 만들면 좋을까요 ?(피드백강력요구) 32
-----------------------------------------------...
-
[초성민수학] 남은기간 수학등급 하나 더 올리기 2탄 35
안녕하세요 초성민입니다 수학을 가르치며, 여러분야를 공부하고 즐기고(?)있습니다....
-
안녕하세요 초성민 수학샘입니다. 오르비에는 글을 처음 올리네요. 여기 저 어렸을때...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.