컴공 일기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를 선물하세요.
-
케밥내놔
-
방학동안 미적 기출 1회독 (너무 어려운건 안함) 수1,2 마더텅 고난도문제 혼자...
-
삼행시 중독되네 3
운 ㄱㄱ
-
주말공부끝 4
꿀같은 day off 일요일
-
반수생 고민 0
안녕하세요 수능을 망친 올해 스무살 되는 필자입니다. 보통 수능 23121...
-
저도 3행시 2
재밌어보임
-
교차없을때는 0
경희대 전자과 고려대 문사철 어디가 정시로 가기더힘들었을까요
-
아무거나 질문받습니다 11
앞으로 질문을 받을수도 아닐수도 있기에 마지막이 될 수도 아닐수도 있습니다 진짜 아무거나 ㄱㄱ
-
수특 수학 질문 2
3모 이후부터 풀어도 되나요?
-
본인이 수술을 아무리 잘해도 ㅈ밥의사랑 수술비 똑같이 받아야 하는데 어떻게 실력을...
-
근데 왜 다 화장법이 달라졌다 이지랄 하면서 포장해주는거임? 그거 인정하는게 그렇게...
-
목욕물 받는중 2
목욕하면서 롤체하기 고고혓
-
삼행시 ㅁㅌㅊ? 27
운 띄우실 분
-
냥! 아리가토~~
-
수학질문 2
수학 기출책 살라고하는데 마더텅 자이 한완기 머가 젤 나을까여
-
어이없네 17
내가 남르비라고 생각하는 이유 ㄱㄱ
-
블루 오브 레전드 ㅋㅋㅋ
-
남들이 뭐라해도 난 나니까...
-
냄샤 너무좋은데 지금 쓰는 핸드크임 많이 남앗고 무엇보다 잘 안바름 향기원툴
-
자살
-
마크 재밋나요 7
안해봣는데 하는 사람이 꽤 많은거 같네요 나도 해볼까 고민중
-
진짜임
-
친구랑 고3때 학교 피구 리그전 영상 보는데 개추억이노
-
ㅠㅠ 하고 나올걸
-
디펜딩 챔피언을 상대로 대떡 가나요
-
https://youtube.com/shorts/FC1tlFJsxMc?si=eKN2x...
-
정답은 대입과 동떨어진 변호사 회계사 밖에 없음ㅇㅇ
-
배성민 워밍업 플러스 어떤가요? 쎈이랑 병행하고 수분감으로 넘어갈 예정입니다
-
문학론 23 24 25 26 강기원 라이브반 수강 윤성훈 불구의 명강 28 29...
-
여르비 더 있나?
-
진짜 후자가 더 취업잘되나요
-
수1은 모르지만 수(하) 내용을 아는 분들을 위한 글 2
안녕하세요 학생에게 도움을 최대한 주기 위해 글을 씁니다. 이번 글은 수1...
-
오르비언 = 남르비 20
Q.E.D.
-
여붕이는 실존할까 10
전 아니라고 생각해요 여붕아 으흐흐
-
삼행시 맜깔나게 해봄 19
운 띄워주세요
-
Srt왤케비싸 2
ㅜㅜㅜㅜㅜㅜㅜㅜ
-
공부에 대한 부담감은 없다고 봅니다 다만 공부외적으로 케이스에 대한 부담감이 더큰거같아요
-
둘중 혹시 제본해도 ㄱㅊ을만한거 있을까요.. (제가 돈없는 삼수생이라서ㅠㅠ 그래도...
-
질문 몇가지만 하고싶어서용
-
풀었던 문제 다시 푸는거 의미 x?
-
이동준쌤 저스트 수1 상 하 가격이 얼마에요??
-
...
-
정법 처음 해봐서 이렇게 공부하는게 맞는건지 여쭤봅니다 우선 최적t 개념완성...
-
혹시 추천해주시면 감사하겠습니다
-
N제추천해주세요 0
드릴 말고 13,4,5 21,2번 정도의 n제 추천해주세요
-
O pássaro mais cedo acordou. 0
Em muito tempo, acordei cedo.
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.