컴공 일기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를 선물하세요.
-
ㅈㄱㄴ
-
시대 김현우 1
김현우 단과 언제부터 신청할 수 있음?
-
안녕 3
굿바이
-
예비고2인데 이번 겨울방학때 국어 열심히 하려고 합니다. 25강기분 절반 정도?...
-
추합 상관 없음… 숭실대 인하대 가능? 문과로 돌리면 동국대 가능한가 ㅠㅠ
-
김승리 현강 0
김승리 현강 신청했는데 현강이랑 인강 차이 잘 아시는 분 없으신가요?? 현강 풀커리...
-
수포자 21
수학미워!수학미워!수학미워!수학미워!수학미워!수학미워!수학미워!수학미워!수학미워!수학...
-
시대 단과 같은 거라도 하나 끼는 게 낫나요
-
컨설팅 신청완뇨 0
이제 성적표만 잘 나와주면 된다
-
현강 8
수능 수학88점 생명44점인데 내년에 한과목만 현강 듣고 다른과목은 인강듣거나 기출...
-
안녕하세요! 감사해요! 잘 있어요! 다시 만나요!
-
"치열한 경쟁은 학문에 대한 깊이 있는 학습이 아니라 합격만을 목적으로 하는 형식적...
-
왜이러2ㅣ
-
다 좋은데찬우형이 분명히 내적수렴에 입이 좀 무거우신 삶을 추구하는거같고 강사...
-
그래도 메디컬인데...
-
둘 중 뭐가더 ㄱㅊ음? 확통만
-
삶이 공허하네
-
알바할때 3개월하고 튈건데 6개월 한다고 구라쳐야겠지 0
뭔가양심이찔림.
-
ㅜㅜㅜㅜㅜㅜ 진짜 답이 없다
-
폴더폰으로 바꾸고 인스타 유튜브 다 지우고 패드로 인강만 볼건데요… 폴더폰으로...
-
전 학교 다니던 시절부터 이미 없었습니다~
-
동생 국어 내신 알려주는데 이친구는 학원을 안다녀서 내신용 문제 어디서 뽑아야할지...
-
D-347 공부 0
-
전화 추합 기간 0
2월에 해외로 여행을 갈거같은데 전화추합기간이 언젠지 알 수 있나요? 13일부터...
-
(중략) 왜이렇게빨리끝내나요lg?
-
나 눈썹 ㅈㄴ뽑아서 눈썹 앞머리 비었음 ㅈ됐는데 이거 어캐고침
-
69제발 3 뜨게 해주세요
-
뭐 국수 원점수 100 100 이런 사람보다 대학가서 자기 전공공부하는 얘기 하는...
-
20분 자고올게요
-
히히
-
물2 2컷 45 화2 1컷 46 지2 2컷 42 물1 47 2등급 생1 3컷 39 지1 2컷 40
-
스케일링부터 모든 걸 다 치과의사가 손수 해주는.... 치과 가면 ㄹㅇ 의사는 3분도 안보는듯
-
이미지 써줘요 13
궁금하네요
-
입결떨어져서 원래는 못가는데 가게 되서 쓰는 얘들이 상당수 일것 같은데 막상 정문...
-
갠톡은 안읽씹 오지는데 조별과제 톡 피드백 들어오면 바로바로 수정해옴 섹시하네
-
저도 이미지 13
써줘요
-
대치 마감이네
-
탐구 백분위에서 많이 피봤을텐데 이러면 원서넣을때 걍 피터지는 싸움 되는것뿐인가
-
공신폰 기능 궁금 17
공신폰 써본 사람들 있음? 공부할때 도움 됨? 진짜 궁금해
-
논리실증주의자는 예측이 맞을 경우에, 포퍼는 예측이 틀리지 않는 한, 2
논리싫증주의자는 관심이 없다
-
이 시험지가 생1 1컷보다 3점이나 높은 시험지였다고? 솔직히 풀면서 46이 1컷...
-
2시간?
-
담배도 막 피면서 술마시고 싶은 밤임
-
세상이 밉구나
-
고2인거같고 내일부터 시험보는 거 같은데 번따하면 방해되겠지 ㅠ
-
나여붕이들도공평하게좋아한다고 그러니까여부이들도쪽지줘~우웅
-
계속 할 듯
-
흑흑 21
나도 sos단, 고전부, 방과후티타임, 결속밴드, 슈치인학생회, 극동마술낮잠결사,...
-
아빠(애비새끼)란 놈이 한달에 한번은 술먹고 폭력쓰면서 엄마랑,저 때리고 어릴때는...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!