컴공 일기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를 선물하세요.
-
아침에 씻을시간없어
-
재수생들아 제발 6
독서실 올 때 좀 신경써서 씻고오자.. 씻는 시간까지 아껴서 열심히 공부하는건지...
-
아무 꿈도 적성도 모르겠는 사람이라했을때 둘다 붙으면 어디등록하는게 옳은선택일까요?
-
정병 오면 ㄹㅇ 힘듦 양쪽 다 공부 빡세게 하는 편이면 더 그럴수도 고3 때 썸을...
-
선배 두 명중에 학점 더 낮을거같은사람 고르래서 ㅈㄴ 잘생긴형 골랐는데 이유...
-
월간조정식 질문 3
1-8월까지의 분량인데 지금시작해도 안늦나요? 교재가 매달 배송오는건가요?
-
파라 개사기네 3
내가 못써서 더 짜증남
-
23수능때 72933 받고 성적에 맞춰 대학가다 군대오고 현타와서 재수를...
-
이제 오르비를…
-
안녕히 주무세요 4
다들 잘자요~~
-
여기 ㄹㅇ 지리네
-
진짜 국어 100점 받는단 마인드로 강민철T 현강으로 강기분 새기분에 인강민철...
-
스블이랑 병행하려 하는데 한다면 스블은 언제까지 끝내는거 좋을까요
-
이제 옯창아님
-
엄마가 해준 집밥 먹고싶다
-
응애 1
응애
-
아마도??노대나 어디 가야해서 못 듣는 거 아니면 우기분 들을듯 개야무짐 개인...
-
아직 한 번도 이륙해본 적 없긴 한데 ㅠ.ㅠ
-
호에엥 3
흐윽
-
안가도 된다는 얘긴가???아니면 오늘 제출한 계획표에 따로 표시 안했으면 가야함??자율이라도???
-
맥북불편한점 1
쓸일없어서 방치하면 방전되는데 키려면 너무 오래걸림
-
난 매년 봤어서 그냥 "그 하얀 무언가"인데 ㅋㅋㅋㅋㅋ
-
저는 9모때 생윤 6등급 맞았는데 수능때 2등급 나왔고 제 친구는 과탐하다가...
-
ㄹㅇ
-
봄 데이트 할만한 것 18
1. 벚꽃 구경 석촌호수 군항제 같이 사람 많은 데는 가도 좋긴 한데 너도나도...
-
6~9만 듣거나 15 듣거나 둘 중에 하나인데 흠..
-
내일 7시까지 잇올 도전.
-
에바일까여
-
기출학습은 필요한거 같아서 강기분 새기분 들어볼까 고민중인데 진지하게 좋나요?
-
독서실 독재 1
재종 단과 근처 독재학원 잇올 다 다녀본 n수생인데 돈도 너무 많이 나가고 저에게...
-
소신발언) 4
뭉탱이
-
올해도 1년 통휴학 확정인가요?
-
과탐 난이도 4
화1 50점 받는 난이도랑 생2 47~44점 받는 난이도 중에서 뭐가 더 공부량이...
-
비행기asmr 공뷰 초음파 맛도리임 허수인 나도 순공 10시간 ㄱㄴ
-
그냥.. 뭐 푸는 방법이 없어서 가르칠게 없음 무엇보다 어법을 거의 모름 읽었을때...
-
뭐가 젤 꿀이냐??
-
문제풀이 위주로 해야할 것 같아서 하루종일 수학해도 미쳐버릴것같고 또 한편으로는...
-
들어가면 걍 무조건 취직 됨?? 서강반 한양반
-
영어 과외 0
인강보다 효율 괜찮나요..?
-
자야겠다
-
좀 성실하게 살고싶은데
-
한다길래 예약은 했는데 내가 막 그정도로 스위프트 팬은 아님 지하철타고 편도 50분정도
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.