컴공 일기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를 선물하세요.
-
날씨 진짜 좋다 0
역시 날씨 좋은게 최고야
-
아닌거같아
-
꼴뵈기 싫게 생겨먹음
-
에휴
-
ㅇㅈㄹㅋㅋㅋ
-
중근이 뭐임뇨 6
안중근임?
-
네. 특히 가슴이 큰 여자가 좋습니다. 이상입니다.
-
점심 ㅇㅈ 6
형아 감사해여!!
-
월간지 추천 2
인강민철 or 이감 간쓸개 or 상상 이매진 상상할거면 오르지널패키지 사야하나요?...
-
의대생은 굳이 휴학할 필요가 있나 싶긴 합니다 다들 학교는 가고 걍 졸업만 한 다음...
-
늙기시러요
-
따뜻한 하루다 6
-
근의 공식 4
이 뭐더라
-
의대 가서 비염 완치하는 방법 좀 만들어주세요
-
오르비 by 매시브의 마이크맨입니다. N수생들의 모의고사와 3월 첫 학평으로...
-
누구나. 자유롭게활동하는. 오루비. 괜히. 설래는맘. 품고.여사님들괴롭히지맙시다....
-
난 여미새 아님 4
이쁜 여자 ㅇㅈ 올라오자마자 후다닥 쪽지보내자 만나자 이러는게 여미새 아니냐? 난...
-
애플페이 좀 제대로 써보자
-
학교 생활은 어떻게 되고 있는 건가요 과 오티, 새터 같은 행사 같은 거는 못하고...
-
굳이 여기까지 와서 수험생 의대생 모두 불안감만 조성하는 글을 쓰는 목적이 뭐냐고...
-
네
-
역시 남얘기가 제일 재밌어
-
자그로는 없나요 이거 명백한 성차별이네요...
-
혹시 작년에 수학공부 하실때 N제, 모의고사 몇개정도 푸셨는지 알 수 있나요??...
-
아니면 1트 더 있음?
-
진짜 몰라서 묻고싶은 것들인데 싸움 날까봐 무서워
-
[속보]교육부 "의대생 제적, 별도 구제책 없어…학칙 따른다" 11
https://n.news.naver.com/article/003/0013137239 잘가용
-
작년에 카투사는 써볼껄 12
공군은 애초애 나이땜에 입대 날짜 미묘했지만 카투사는 써볼껄 ;;;
-
여어~ 3
-
수1,수2 미적 푸는데 이게 다른문제집이랑 난이도가 얼마나 차이나나요
-
1. 소고기 촛불집회때 미국산 소고기 먹으면 광우병걸려 죽는다고 광신도처럼...
-
외대 쓸걸 1
뱃지라도 받을걸.. 슈발
-
살면서 본 어떤 기출&사설&모의고사에서도 80점대를 받은적이 없는데 3덮 국어...
-
헷갈렸노
-
24수능 봤던 사람인데 24 6모 지구 1, 9모 1, 수능 2였어요 다시 수능...
-
잘한결정이겟지
-
Bok 0
책
-
최상목 대행 탄핵소추 문제도 한 몫 할 겁니다.탄핵소추 정족수를 151석으로 할...
-
무등비 삼도극 이차곡선 융합문제 도형 정의 극한으로 활용하기
-
오늘은 안에 런닝셔츠만 입고 와서 못 벗는데 이제 무조건 반팔임
-
1이 가장 나은듯... 어떠십니까?
-
4점 내는게 급수29번보다 나은거 같은데 예전 이지만 가나형 공통 문제기도 했고
-
나 코트 왜 입고왔냐 육수 좔좔 흐르노
-
1-2월: 유기 3-6월: 내신 깔짝+이감 220제+상상 275제 7-8월: 실모에...
-
[속보]헌법재판소, 한덕수 국무총리 탄핵소추 기각 89
헌법재판소, 한덕수 국무총리 탄핵소추 기각
-
ㅋㅋㅋㅋㅋㅋㅋㅋ
-
메인은 여러 번 가 봤는데 여기 올라가보는건 처음이에요 더 열심히 활동할게요 감사합니다
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.