컴공 일기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를 선물하세요.
-
숫자 위에 해모양이 나와야 온풍기 모드인데 아니 ㅅㅂ 분명 해 떴는데 찬바람만...
-
약대 절실한데 가능할까요?? 아주대 가고싶은데.. 아주대는 어려울까요ㅠㅠ.. 언매...
-
수능과목으로 물생 공부하던 사람입니다. 물리 이규철t 듣다가 이번에 입대하셔서 다른...
-
문제는 이미 3-1학기에 미적을 넣어놧다는것임... (못 바꿈) 기하는 지금...
-
집이 빵빵해서 낭만적인 선택이 가능하다면 어디 가고 싶음? 난 설물천 물리학전공
-
저 욕먹는 거 좋아함 15
운명의 사람을 만난 듯한 두근거림이 생김
-
감독관 입실 후 나눠주길래 오 색깔 좋다 하고 받았는데 갑자기 쎄한 기운을 감지...
-
뉴런 고3여름방학때부터 해도 안 늦을까요??
-
하나 시키고싶은데 고민임뇨
-
친구랑 답 비교하면서 공부중인데 답이 서로 달라요 저는 2번하긴했습니다 내신...
-
ㅇㅇ
-
저도 이미지 써주세요 13
고마워요
-
저도 이미지 적어주세요 24
-
구문부터 해야될까요? 일단 2등급이긴한데
-
귀엽잖아?
-
낮-중간 공 기준 어느정도 나와여 써볼만한가요 예비고3인데.. 잘 모르겠어서...
-
국어 현강 유대종T 인강 이원준T 수학 현강 정병호T 인강 현우진T 영어 현강...
-
이번에 수능 망친 분들... 혹은 앞으로도 수능 잘 쳐서 의치약 혹은 기타 전문직...
-
김승리 현강생 들으면 대성에 파는 매월승리 안 사도 되나요 2
김승리 현강 듣습니다 현강에서 따로 매월승리 자료 주나요?
-
우우- 나도 새하얗게 얼어버렸네
-
샤워하기 귀찮아서 물2 고른다는게 왤케 귀엽지 ㅋㅋㅋㅋㅋ
-
본인은 아무 샹각없이 쉬는 중인데 언제 시작함
-
가끔씩 나도 인실좆 의식못하고 막 행동할때가 있는데 진짜 정신 똑바로 차려야함
-
아픈.. 0
아빠가 똥싸고 똥꼬를 안 닦고 콧구멍을 닦는데 어떻게 해야하나요?
-
불과4년전까진제가예술가가될줄알앗거든요근데공대에와있더라고요
-
다들 양산형만 짝어대서 신박한거 추천좀
-
제 이미지는 어떤가요 18
방구석백수옯창
-
23수능 때도 화작이 꿀이라는 여론이 압도적이었는데 실채점 나오고 전부 다 진압됐음 걱정 ㄴㄴ
-
내가 다 빡친다
-
여고생조아 1
본인도여고생이다
-
저는 경제랑 정외예요
-
철학은 형이상학인가요?
-
내 이미지 진짜 이럼? 25
흠.
-
여기 올라온 답은 저랑 답이 너무 달라서 제 답 올려봅니다 1-1 pi/12 ,...
-
공부한 거 올리고 그럴거임
-
탐구끝나고 퇴실시간까지 폰없으면 정신과시간의방이라길래 챙겨갔었는데 퇴실때까지...
-
결국엔 1
어그로 ㅈㅅ 정시 보고 있는데 작년 기준으로 합격 최종이 상위 70퍼센트라는게...
-
학교 내신기출인데 혹시 답이 뭘까요.. 그리고 문화누리카드는 좁은의미의 문화인가요?
-
올해 국어끝나고 진짜 ㅈㄴ시끄러웠고 밥먹고 영어보는데 밖에서 떠드는거 개빡셌음뇨
-
근데 젠가를 세우기 싫으면 어떻게 해야 하냐? 젠가를 언급하지 못하는 분위기를...
-
으악 비온다 3
갈려면한참남았는데...
-
23 물리 1컷 46 25 물리 1컷 47~48추정 이게 뭐죠 대체...
-
약대 사탐 Or 과탐 16
ㅈㄱㄴ 사탐 해야할까요 과탐 해야할까요
-
xx대의대 너. 7
내가 눈여겨 보는중.
-
학군지 물리 내신 1등, 교내 물리 경시대회 금상, 고2 학평 물리 올만점인데 수능...
-
옵창 판별해줌 89
댓ㄱㄱ
-
친구만나고옴 0
오랜만에사회적상호작용을 대학로 많이 바뀌었네 1년반만인데
-
올해 시험장에서 현역들이 고군분투할때 한시간 풀고 누워버리는 n수생 한 명을 보면서...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!