컴공 일기253
게시글 주소: https://orbi.kr/00070242684
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. 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를 선물하세요.
-
관리자님 레어 신청. 레.어.신.청 휴학계 아니라고요 5
근데 승인 왤케 오래 걸림
-
화곡동 실제 후기 궁금함
-
지금 2층에서 못올라가고잇음 한달만더잇엇어도 진짜달리는데
-
Humble 1
Ddoodooodododooodododooododooododoooodododooodo...
-
.—-.—.—-.——/-/-/-/-/~~~~.—.—.—-.—-.——.
-
또 햄버거 먹어요? 20
네
-
거절이니까
-
국어 기출 오답 0
국어 기출 풀고 틀린문제 오답을 어떻게 해야될까요?? 지금 그냥 틀리면 그 틀린...
-
스바..
-
ㅅㅂ 정답률이 박살났는데
-
김기현 파데랑 킥오프만 문제 풀고 정승제 개때잡 듣는거 어때? 모르는 문제만 김기현...
-
올해 풀 n제들 1
어싸 이해원 드릴6 샤인미 설맞이 하사십 다 할 수 있겠지?
-
요즘좀힘드네..
-
개더움
-
기하는 시발점이랑 생질중에 뭐가좋나요 노베입니다. 공통은 좀 할만해서 기하에 하루...
-
ㅇㅂㄱ 10
-
예전 글 찾아보니 어떤 글에서는 지사의급이어야 되고 어떤 글에서는 3합 5정도면...
-
이세돌이 왜 4
알파고랑 리턴매치 잡힘?
-
학교째고늦잠잠 2
-
집중공격해서 30분만에 죽여버리고 시체방 보냄
-
국어 시대인재 0
지금 목동 시대 서준혁(박준호)T 수업 어렵나요?? 몇등급정도가 들을 강의인가요..?
-
리만가설 푸는법 1
수학의 모든 정보를 명제논리로 나타낸다 그 명제들의 가능한 모든연결을 시도한다 해결
-
등원 첫날에 고딩동창 발견하고 인사하고 오늘 새로 온 애도 또 고딩동창일수가...
-
좀 씻자 제발 4
독서실에 이분 들어오자마자 냄새가 코를 강타함 이게 한달째 같은 냄새 맡고있으니까 죽을지경이에요
-
마지막 기회입니다. 알아서 붙을 사람은 붙고 싫은사람은 찌 갈길 가세요 ㅋㅋ 김기현 현우진 보라타카
-
조때따 5
개강3주차 이해한 강의가 하나도없다
-
ㄱㅇㅇ 1
힝잉잉
-
볼륨 넘 큰데 패스할까요?
-
현재 경희대 상경계열 다니고 있습니다. 학벌에 아쉬움이 남아 반수 생각이 매번...
-
ㅈㄱㄴ...
-
고고고
-
[단독] 연세대, 미등록 의대생 45%에 ‘제적 예정 통보서’ 오늘 발송 2
연세대 의대가 학생 881명 중 1학기 등록을 하지 않은 398명(45.2%)에게...
-
수험생 7대 죄악 42
롤창 야구덕후빠순이커플년놈공스타충과도한 망상증오타쿠
-
마음에 손을 얹고 1) 사과탐 선행이나 강의 들을때 너가 강사나 교재의 잘 정리된...
-
ㄱㅇㅇ 3
-
개운하다
-
그건 왜묻는데?
-
서로 마주보고 조용히 각자 폰하다 수업들어가는게 맞지?
-
인강 안듣고 교재로만 ebs 수특 문학 공부하려고 하는데 어떤 교재 가장...
-
글삭제 포기함 6
누가 다시 글삭제 메크로 올려줬으면 좋겠다 1년기다려야하나
-
탈르비는 없다 20
휴르비만 있을뿐
-
오르비 3년찬데 14
덕코 쓰임새를 아직도 모르겠음... 그런고로 이렇게 방치할바엔 뿌리는게 나을듯...
-
수금방법을 조금 빡세게하고 책 사거나 굿즈 구매시에 도움되는 방식으로 해준다면...
-
4반수하시는분들 있나 13
1학기 학점 열심히 챙기죠 다들
-
아무도 못알아보는것 같아서 슬프네여.역시 전 듣보잡이었군여.
-
소원임
-
백호 쌤말곤 컨텐츠도 딱히 없어서 뭘 해야될지 모르겠고ㅠ 일단 섬스개완 진도...
-
우웅 0
집에 거고 싶어
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.