컴공 일기252
게시글 주소: https://old.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를 선물하세요.
-
솔직히 SKY 이상 갔는데 반수는 양심없는 행위임 ㄹㅇ 21
라리가 올해 어디가 우승할까요?
-
사실 내 다짐 적는 느낌이긴함
-
아사히라고일본여친있는데 올해까지는안보기로했음 근데매일매일이고통이더라
-
삼수고민 3
현역 언미물생 52242 재수 언미물생 42411 6모 31411 9모...
-
기원 3일차
-
수2)“도함수의 넓이는 원시함수의 함숫값 차이다.”라는 말이 맞는 말인가요? 10
수2 내신 서술형 준비하는데 이 말이 맞나 싶네요
-
미적 88 5
20 22 28 틀린ㅜ88입니다....미적분 선택햇고요...
-
라인 최대한 높게 어디까지 가능할까요...? 중경시 쓸 수 있을까요
-
연애해보신분들 32
어떤 감정인지 너무 궁금함다 고백후 성공했을때 진짜 어떰?? 상상만해서...
-
40 이내로 추천좀… 발렌시아가 이런거 ㄱㅊ음?
-
나는 풀숏인데 ㅅㅂ
-
백종원의 레미제라블 재밌음?
-
매년마다 항상 나오는 방통대 출신은 순수 방통대인지 고학벌이 학점 세탁하러 편입한건지 궁금
-
오늘도 만보 4
굿굿
-
아하하하하하 11
자살마렵다 시이.밥 !!!
-
전략적으로 0
한 과목은 버린다
-
10분 츄가 개꿀
-
실채 나오고 칸수 떨어지고 크리스마스 지나고 원서철될때 칸수 떨어지고 이 빅이벤트가...
-
오 7
3일만에 테달기 성공
-
댕 무서운데
-
진짜 재밌긴함
-
이게 23이랑 1점차인 시험이라곤 믿기 힘든데
-
어김없이 수능을 망해서 차가운 크리스마스네 케이크나 먹으려고 케이크 삼
-
국어언매-90 (공 66/선 24) 수학미적-100 영어-2 생1-42 지1-47...
-
논술 결과 발표 0
언제 나와요..? 수시 최종 발표 작년에는 언제 나왔나요?
-
매달적립식으로일정금액사셈 절대절대후회안함
-
공1 미1이 얼마나 많은지가 중요한데
-
컴활 1급 따려고 하는데 학원 다니는 거 낭비라고 생각하시나요..? 독학으로 하신...
-
시간은 한정돼 있고 아...
-
맞히면 천덕 5
한국교통대는 어떤 대학이랑 어떤 대학이 합쳐진 걸까요?
-
주식 처음해보는데 29
어떻게하는거죠.. 난생처음 해봄.. 그냥 애플이 친숙해서 샀는데 괜찮은거 맞나요?
-
본래의미는퇴색되고 이제는진짜투기꾼밖에 남지않았음뇨
-
그런거같음
-
안그래도 작고 소중한 정시 파이를 왜 노나먹는건지ㅠㅠ
-
개핵불로 내시거나 만백 씹창 내서 과탐으로 유도 맞냐?
-
다행히도 저보다 더 숙련된 분이 통역하신다네요:) 저는 대신 금요일에 통역 장시간 할듯? ㅋㅋㅋ
-
아오 ㄹㅇ 저것땜에 대학들 한칸~반칸은 밀린 것 같네
-
예비고3이고 지금 수2시발점이랑 쎈 방학전으로 거의 다 끝나가는데, 방학하고나서...
-
계속 개념 까먹어서 사탐 공부한지 4개월이 지났는데도 완벽하게 마스터 못했는데 뭐가...
-
아님말고 더 어렵게낼 수 있을거같았는데
-
그런 이상한거 하나 있으면 ㅈㄴ 말림 +미적 풀 시간 부족으로
-
27442 대학 3
어디가나여…
-
얼마전에 친구한테 들었는데 컷이 미쳐날뛰더라고요? 그만큼 공군 준비하시는 분들이...
-
실시간으로피말리네..........
-
니폰,,,,
-
옯스타만듬뇨 7
인스타 첨해보는데 가이드해주실분구해요 homecominginstinct <-- 이거임뇨
-
그런자산을찾고있음뇨
-
축하드립니다! 190
당신은 따봉도치의 행운을 받았습니다 좋아요를 누르고 댓글로 "따봉도치야 고마워"...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다