컴공 일기253
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. 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,수2,미적 수분감 다 했는데 다른 기출 문제집 풀 이유가 있을까요
-
성대 1/7 조발 근데 다같이 궁예투표했을땐 제일 표 수 적었음
-
아침에 스카오다가 가방에 커피 쏟아서 1차 딥빡 얘 때문에 2차 딥빡... day off 마렵네
-
얼부기 4
-
카지1노랑 무빙은 봤어요
-
일단 25수능 국수탐2 백분위 합 288 나옴 그리고 국수탐1 3합 3나옴 26수능...
-
수학교재이름으로 4
사정감 어떰? 4점을 정복하는 감각 좀 야한가
-
알바도 안 구해지고... 엉엉
-
서버 터졋남 ㅇㅅㅇ
-
ㅈㄱㄴ
-
나중에 인생을 역전 할 기회가 있을까요..
-
재수생 달린다 3
고고혓
-
전전글 영상매체 ㅇㅈㄹ한거부터 지금까지 8화 쭉 보는중
-
현우진 시발점 1
쌤이 25수능 19번 25분 안으로 못풀면 시발점 하라 하셨는데 그럼 시발점...
-
(서울대 합격 / 합격자인증)(스누라이프) 서울대 25학번 단톡방을 소개합니다. 0
안녕하세요. 서울대 커뮤니티 SNULife 오픈챗 준비팀입니다. 서울대 25학번...
-
확통 최저 5
(메디컬x)수시 자연계 학과 수학 최저는 확통으로 맞춰도 되나요?? 학교마다 다...
-
작년에 ㄱ공통미적 다 사놓고 거의다 못햇는데
-
와근데 안개머임 5
미쳣네
-
(0≤n≤5) 인 n에 대하여 의 원소의 개수는?
-
진짜 존재이유를 모르겠는데 아니면 최소한 다른부위보다 예민하게 만들지나 말던가...
-
시발점 0
고삼인데 개정시발점으로 들어야돠나요?? 개정전 시발점책만 잏ㄴ,ㄴ데 책 다시 사야하는건 아니죠??
-
일단 반수한다는 가정하에 여름방학에 본가로 돌아와서 러셀코어 다닐거 같은데 지구과학...
-
어디가서도 배울수 없는 엄청난 수능형 사고방식을 담아둔 책임? 신이 내린 엄청난...
-
군입대하고 신병휴가를 수능에 맞춰서 나가는거지 이론상 완벽할지도
-
연리 65.7%가 여러분을 기다립니다
-
션티 풀커리 0
션티쌤으로 시작하면 풀커리 타는 게 좋나요?
-
얼버기 1
이정도면얼버기.
-
밤샜음 9
자야하는데
-
여캐일러 투척 9
화2 정복 8일차
-
잇올도착 5
투데이 스타트
-
캬캬캬
-
ㅋㄷ 3피스 팔아요?
-
과외때메 수학,생명은 공부할건데 화학도 해야되나 화학은 과외 수요가 없을거 같은데
-
현강 토리님들 곧 오리진 끝나고 본편가는데 필기도구 뭐뭐 쓰나요?? 알려주시면 천사 ㅠㅠㅠㅠㅠ
-
지구과학 질문 1
반수할건데 아직 확정되지는 않아서 메가패스는 안샀는데 지구과학 독학 가능함?...
-
최초합 가능한가여…?
-
인하대 조발 0
하루라도 땡기면 안되냐
-
춥다 추워 2
-
얼버기 7
한시간 정도 잤네용
-
오야스미 2
네루!
-
ㅈㄱㄴ 현역 기공붙엇는데 반수생각중이라
-
얼마만이냐
-
돌아오기까지가~~
-
얼버기 엄벌기 4
피고내
-
싸펑 엣지러너 12
대충 먼내용이죠
-
내가 텍스트로 읽는게 더 좋아서 그런지는 모르게ㅛ는데 웬만한 실전개념서 중에는...
-
김승리 질문 1
김승리쌤 문학이 말이 많던데 어떤가요? 저는 왜 그런지 이유를 확실 하게 파악해야...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.