컴공 일기253
게시글 주소: https://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를 선물하세요.
-
공부를 안해서 그런거지 수학은 정말 실력이 천천히 오르는 과정임 3등급 까지는 쉽게...
-
다른과 지정교양 들어도되는지 어디에다 물어봐야하는거지 2
흠 도무지
-
오르비 오류인가?
-
아 이거만 아니었으면 가는데 아 ㅋㅋ
-
국어: 강기분 or 올오카 수학: 뉴런 or 시발점(딱 한명 심특 봄요) 영어:...
-
그쪽도 저런생각 하는사람 좀있나보네
-
ㅇㅈ 6
기숙사 첫 배달음식
-
아침을 먹어볼까 3
흠
-
일단 작년에 9평 5 에서 아수라만 듣고 수능전까지 쭉 따라가 작수 3까지...
-
1인1닭 흐흐
-
ㅋㅋㅋㅋㅋㅋㅋㅋ
-
근데 인하대 전자떨어졌네 ㅠ 예능픽으로 성대 솦웨쓴거도 떨어짐 사탐런이 컸나...
-
난 비호감이구나 1
Grief
-
누가 붙여놨냐ㅋㅋㅋ
-
그래서 수학만 풀기로 결정함
-
파이널 좀 전에 헤어짐 얼마전에 보니까 약대갔더라
-
걍 6년제라네요
-
ㅠㅠㅠ 검토하는데도 한세월..
-
(말투가 저런 이유는 원문이 대치키즈 학부모들이 독자라서 그럼) (이글은 정시파이터...
-
너는 내 s 극돼줘 이건이 멀전씨 럽~ ㄹㅇ 왜 공장이라 하는지 알겠다
-
수의대 스크럽복 0
보통 언제 받나요? 본1 올라가면 받나요
-
보험사 주식을 사들여서 리스크를 헷징하자. 의사 숏 포지션=보험주 의사 롱 포지션은...
-
교재는 강기본입니다.
-
의사에 커버드콜 전략으로 투자하기
-
낯설은 이 설레임
-
이것이 가장의 무게…
-
22수능이 처음인거 같네요 여러모로 대단한....
-
만난지 얼마 안됐는데 하...
-
"서울 뒤덮은 615만 태극기 물결…탄핵 반대 함성 드높였다" 23
3·1절을 맞은 1일, 서울 도심이 윤석열 대통령의 탄핵을 반대하는 대규모 집회로...
-
기출이랑 n제 등에서 못풀었거나 오래 막힌문제, 또는 풀었더라도 기억해둘 만한...
-
귀찮은데 걍 가지말까
-
도장수집가
-
아직까지 통합과학 강의 런칭 안하신분들은 선택과학 마무리되면 메가스터디...
-
잇올 지금까지 1
1월말 시작 토일 포함 한번도 안빠지고 7:30(8:00)~22:00 까지 한듯.....
-
의대 포기 20
의대생 + 전공의들이 그들의 청춘과 젊음을 소비해가면서까지 드러눕는 이 상황에 왜...
-
모두 국어강사였네 하나 예외 있다면 션티정도
-
재수생 N수생 신경쓰지 말고 자기 공부만 잘하면 좋다고 생각해요 애초에 사람으로서...
-
이거 누구 닮은것같음 14
보면볼수록 똑같은듯 ㄷㄷㄷ
-
오늘 생기부 나왔는데 생각한 것보다 정말 별로로 나온 것 같아서요,, 분면...
-
나 같은 베타메일은 어찌 살라고
-
과목은 생윤ㅇㅇ 기시감 실개완 두 개 그대로 쓰고싶음 돈 아까운데… 작년 거 그대로...
-
연고대, 성대 한양대가 교과반영하는걸로 아는데 영향력이 어느정도인지 궁금해서요...
-
동아리 신청했다 4
면접도 본다는데 ㅈㅂㅈㅂ 가입하고싶다 ㅠㅠ
-
수학에재능이없나 8
2점은좀아닌데;;
-
사업은 잘할만한게 없고 투자는 시드가 쥐똥꼬구나,,,
-
지로함 수2 해야겟다
-
ㅈㄱㄴ
-
캬 캬 캬 1
-
실력이 올랐는지 확신이 안드네요...3모가 기대되면서도 두렵다..
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.