컴공 일기252
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. 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를 선물하세요.
-
영어4등급인게 감점이 너무 심해서;
-
분명실존한다
-
나는 원한다 16
모두가 행복하기를
-
음요체 그만 써야겠음 17
음슴체 쓸거면 음슴체만 쓰고 존댓말 쓸거면 존댓말만 써야지 이건 또 무슨 혼종이람...
-
친구 일하는 술집 8명이서 갔는데 난 눈수술 해서 술도 못마시는데 오라해서 갔더니...
-
뉴진스 빠는 친구랑 이걸로 좀 다퉜는데 투표좀
-
둔둔둔둔두눋누 1
둔두누두두두두두ㅜ
-
노베대상 과외 후기 2트 애가 고1이고 이제 2학기 다 끝나가는데 조립제법을 모름...
-
고2 5월에 자퇴후 바로 잇올 들어가서 공부한 결과 56466->33222로...
-
그냥 제 의견이긴한데 오히려 사설 지문만 많이 풀고 그러면 평가원에서 쌓은 감이 더...
-
ㅇㅈ 5
-
ㅇㅈ 3
이제 자자..
-
6모 수필 그거 3트하고 안 되니까 포기한 선비들 까는 내용이던데 삼반수 조지고...
-
아무나시작해주세요 저는할사진이없어요
-
가입 후 10일 제한 <- 이게 제법 견고한 진입장벽으로 작용하는 듯 해요 당장...
-
야코드립인 줄 알앗음... 마치 코동욱처럼
-
형이보여줄게
-
둘다 됐는데 둘다 갈까용? 심지어 날짜도 같은날임
-
여러분의 2026 대비 강의를 어서 듣고 싶습니다. 열심히 촬영하셔서 빠르게 올려주세요 :)
-
06 2026 독학재수 인강커리 조언(언매/미적/사문/물리) 제발요ㅠㅠ 3
한과목만 이라도 조언좀 해주세요ㅠㅠ 정신차리라고 쓴소리 ㄱㄱ 목소리 너무 잔잔한...
-
1년 후 미래에서 왔는데 26학년도 수능 등급컷 알려줌 2
우선 난이도는 국어 불 수학 약불 영어 보통 사탐 평범 과탐 마그마 국어 화작 1컷...
-
수입 개미쳤넹
-
내가 옯창이어서 그런 거 아님
-
지구과학 3
시대 3컷 35던데 34는 이제 희망 없는건가요 ㅠㅠ??
-
송도 사시는분 9
참고로 인천 송도
-
단물 빠진 껌 억지로 질겅질겅 씹는 느낌 남
-
존예 한명 여친, 100명의 친구,여사친 안부럽다
-
지금 수준에서 국어/영어 인강이나 월간지가 꼭 필요할까요? 1
다양한 문제를 많이 풀어본다는 목적이지만 제 수준에서 월간지가 맞을지는 모르겠습니다...
-
오르새,현우진 3
오르새 풀커리 탈건데 개념에센스 듣고 뉴런도 추가로 하고싶어요. 개념에센스만 다...
-
예전엔 진짜 붐볐는데...
-
내 글 댓글들 모두에 좋아요를 눌러주는 사람이 있다 6
내가 할 일을 대신해줘서 기분이 좋다
-
나랑 놀아줘잉 23
심심해요
-
지금 시대컷보고 불안할때마다 메가,ebs컷이랑 시대컷이 바꼈을 때 상황 상상해보는...
-
집 가는 중 3
ㅈㄴ 힘들다 십
-
과탐 원투로는 설의 말고 연의/성의 같은 메이저는 못 간다고 봐야하나요? 0
원투로는 설의 말고 연의/성의 같은 메이저는 못 간다고 봐야하나요?
-
밸런스 게임임뇨 13
서울대 의예과 나온 평범한 외모의 사람 vs 지잡대 철학과 나온 차은우랑 도플갱어인 사람
-
13.1 쓰고있었네.. 지금 15.1.1까지 나왔구만..
-
ㅅㅂ 11-15라인이 7분컷이 말이 되냐
-
흑흑...
-
늘 늦어도 자정까진 잠들려 노력하는 편인데 이 양반들이 자정부터 화력이 세지니 원...
-
대충 월에 100쓰는거 같은데 취미 빼면 60후반까지 줄겠네,,,
-
오후.
-
자러감요 2
-
세 병은 너무 힘들어..
-
그렇게 고를바에 걍 재밌어보이는거 고르는게 나은듯
-
ㅇㅂㄱ 2
-
9시로 작전변경.
-
이미 수1 수2 둘 다 사서.. step0 step1 푸는데 며칠 정도 걸릴까오
-
국가에서 지원해주는데 컷도 맞히겠어~?~?~?~?~?
-
에공 에고공
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!