컴공 일기252
게시글 주소: https://ys.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를 선물하세요.
-
맨날맨날 새로운말 하기가 귀찮다
-
현고2(07)입니다 독서를 피램 기출문제집부터 시작하여 끝나게 되었는데 그 이후로의...
-
이걸 어쩐다..
-
재수생 메가패스 2
메가패스 사고 나중에 환급 받으려고 했는데 보니까 예비고3부터 예비고1밖에 없음....
-
아무것도 납득할수 있는 근거가 없다
-
쓸 글이 없네 2
뻘글 잘 쓰는 사람들 부럽다...
-
재수 정시 0
이번에 2합 6도 못맞춰서 재수해야하는데 (현역) 재수할꺼면 정시가 맞음? 본인...
-
반박 안 받습니다.
-
분명 전보다 잘 봤는데 옆그레이드 아니면 갈 수 있는 곳이 없는데 ㅋㅋ
-
수능 끝나고 열심히 하루5시간씩 게임만 했더니 인강5시간쯤이야 ㅆㄱㄴ 진짜 게임하다...
-
찐 i들은 5
찐친 만나는 것도 귀찮아하나요? 전 i 85프론데 집 이틀이상 있으면 답답해서 못...
-
. 섞은물등장☆
-
질문도 ㄱ어릴때부터 많이 해야 느는 듯
-
언매 화작 0
예비고3 정파인데 언매는 노베이고 화작은 13분만에 다 풀었고 3개 틀렸는데 뭐가...
-
지금부터 하루 14시간씩 한국사만 파면 1년안에 가능?
-
. 10
-
언제쯤일까요? 12월 31일부터 현강하시는거 같던데 넉넉 잡고 3월정도로 생각하면 될까요?
-
어차피 연치써서 노답인데 탈주할까 진지하게
-
좋...지는 않고 맵다 근데 왜 피우는지는 알겠음
-
메가기준 본인 모 약대 1등임..
-
뭔가 억울하단 말이지....
-
현실을 받아들이십시오. 12
여러분들은 현역이 아닙니다요.
-
X={1,2,3,4,5,6} Y={a,b,c,d} X->Y함수중 치역 공역이...
-
성적표 D-4 8
빨간약까지 남은 기간 4일
-
지금은 끊음뇨
-
이번에 느꼈자나 그냥 대통령이 인원 늘리면 명분 없어도 늘려지는거임 치대 한의대...
-
진학사 0
개같이 칸 수 떨어지네
-
나 인프제만 팔로우해서 934명의 표본확보중임
-
손절했던 지인 왈 '야 운동선수 오래 못하는데 그럴거면 나처럼 바로 다른일로...
-
아무도 절 막을 수 없음요 흐흐
-
오늘도 기도합니다...! 제발 1 주세요 ㅠㅠ 메가 ebs 이투스 진학사 유웨이 부산교육청 믿습니당
-
청정수 없나..
-
사탐런 과목 추천좀!! (무휴학 삼반수 이과->문과) 30
6911 각각 물리 48 50 42 지구 44 38 35인 재수생 사탐런...
-
고2 지방러고 시대인재 라이브 수학을 들으려는데.. 강기원샘이나 김현우샘을 들으려...
-
시간대가 말이되나 이게
-
한 100일정도 걸리겟군
-
공부할때도 이정도로 집중한적은 없는데
-
잔잔쓰 5
-
사실임뇨
-
성적표 나오기 전에 올려도 되나 일단 지구 1번틀 48이긴 한데 뭔가 증거가...
-
입덧인가
-
고민상담 0
개인 연락으로 고민상담 구합니다. 심각한 고민이 있습니다
-
같은학교애인데 1년전 고2 11모에 전과목 5등급 이하.. 영어만 4등급 고1,2때...
-
일단 나한텐 7년만의 성불완료
-
스토리 올리기 4
왤케 귀찮지.... 어디 갈 때마다 제때 제때 올리는 분들 존경스러움
-
캬캬캬캬캬캬캬캬 4
부활성공 숏충이관짝뜯고부활
-
의뱃 어케받음? 3
걍 수시합격증나오면 그걸로인증하면댐?
-
그래도 괜찮다고 따뜻한 한 마디 부탁할게
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다