컴공 일기252
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. 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를 선물하세요.
-
3수박고 3뜬 인생ㅈ망허수는 다시 나가봄..
-
팥붕이라니 17
전 팥 자체를 안 먹슴뇨 송편도 깨송편만 취급함.
-
기차지나간당 6
열차 운행의 중요한 과제는 열차를 신속하게 운행하면서도 열차끼리의 충돌 사고를...
-
붕어빵은 팥붕이지... 33
-
아직보는중 호리미야도 같이 보느라
-
참고로 게이는 절대 아님 그냥 궁금함
-
지구 1컷 여론 22
42 -> 44 -> 43 왜 이런 식으로 바뀌는 거 같지... 42인데 꼭 1...
-
마누라도바꿔서 ㅋㅋㅋㅋㅅㅂ 존나웃기네 ㅋㅋ
-
둘 다 들어본 사람 있으면 장단점좀 알려주세요
-
마크가 문제임 근데 1화부터 살짝 하드하던데..ㄷㄷ
-
옵만추할 사람 구합니다 36
만나기전에혈핵형만알려주세요 되도록이면음주안좋아하시는분이면좋겠어요
-
자러감뇨 3
지금 자면 한 11시에 깰거같음뇨. 개인적인 희망사항으로 2시까지 잠들어 잇을 수 잇다면 좋겟음요
-
화작 2개틀에 9번문제 어휘임뇨 수능장에서 뭔짓을한건지 진짜 살자 개마려움뇨..
-
그냥 잘칠 거라는 미련을 버리고 봐야되는 건 아는데 0
그래야 진짜 마음 편하게 보는 건가 흠 아무튼 이제 언매 이 ㅆㅅㄲ<~버리고 화작...
-
대화에 못 끼겟어서 자러감뇨
-
다풀고 시간 20분남기고 15분동안 44번만 고민하다가 다행히 고쳐서 맞춤
-
씹덕) 급함 34
아부지가 내가 군대갔을때 이사갈수도 있다고 하는데 요거 미리 포장해놓는게 났겠지?
-
그냥 오르비에서 들어서 아는거
-
제 최애는 6
1등은 호시노 아이고 2등은 아카네임뇨 이유는 이쁨뇨
-
저거 마지막껀 이투스인가? 더프도 거의 대부분 서울대 스카이 나오거나 못보면 서성한...
-
일단 카나 싸대기 없애고 아쿠아가 사실 유서를 써놓는 거임 하늘에서 지켜볼테니...
-
진짜 잘껀데 0
저 잠 들때까지 글 쓰는것좀 멈춰보셈뇨
-
재수 평가 좀 2
작년 평백 77 이었는데 이번엔 86나옴 많이 별론가..? 난 그래도 많이 올라서...
-
8칸 추합 7
입시하면서 8칸 추합 처음봄 ㅋㅋ 개신기하네
-
최애의 아이 9
최악의 결말 1위 나히아가 장례식에서 부활해서 부동의 1위 등극
-
결혼생각은 4
2%정도 잇고, 자식 낳을 생각은 0% 정도 잇음뇨
-
정시 학종 영향 1
내년도 부턴 한양대에도 학종10%가 추가되는데 이러면 학종의 영향이 얼마나 미치나요?
-
이과생들 왠만하면 사문으로 런칠텐데 이럼 등급따기 다른사탐에 비해 빡셀듯
-
수1 수2 뉴런+수분감 미적 시발점 +쎈 할건데 하루에 8시간 정도 수학 한다고...
-
정시컨설팅 0
Ida 정시 컨설팅 받아보신 분 계신가요….. 후기가 없어서 모르겠어요….살려주세요…….
-
중학교 3-2 중간고사 평균 98.1로 전교 2등한거랑 고3 10모 국수탐...
-
반박 안 받음
-
왜냐면 그럼 난 면제나 공익이니까..
-
아묻따 생윤사문이 맞나요
-
에라 모르겠다 0
낙지 실지원 987칸으로 박아놔야지 ㅋㅋ
-
학교 선생이 주제 같은거 ㅂㅅ 같이 잡아놔도 그거라고 따라가야 함 ㅈ 같네 ㅋㅋㅋㅋ
-
반박시팥첩
-
국어 유기하고 수학만 파는거 어떻게 생각하시나요?? 영어 간간히 하고
-
군대 + 학부 + 석박사 존나 빠르게 딴다쳐도 8~9년임뇨
-
기원합니다
-
어차피 나 죽으면 이세상은 다 끝나는거라고 생각함 그리고 내 한 몸 부지하기도...
-
ㄹㅇ
-
오늘 용잡고 겉날개 5개 얻음
-
일단 키가 2컷이니 얼굴 6등급이라고 치고 4등급 맞는듯뇨
-
그래도7등급은됨뇨
-
오늘은 탕수육 대짜만 벌자
-
그러기엔 외모9등급이라 운동이랑 피부관리부터 하는중….
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다