컴공 일기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를 선물하세요.
-
안녕하세요. 언제나 노베이스에게 진심인 영어강사 Good day...
-
추천받음 3
심심해서 수학 모고 풀건데 언제꺼 풀까 추천받음
-
학습 vs wwe
-
감각이 좋은 것도 아닌데
-
하 배에 가스 찼다 12
한달에 한번씩 배 아파서 ㅈ같네 적당히 먹을걸
-
어렵내요
-
저에게 당연한데 학생들이 받아들일 때는 어려워하여 문제풀이 연구하여 알고리즘 및...
-
공부 n시간 하면 적은건가요 분들에게 드리고 싶은 말 3
당신은 오늘 저보다 15n배 더 많은 공부를 하셨습니다 잘하고 있어요 화이팅
-
현역 화미생지 57465 재수 화미물지 24234 저는 사실 재수성적도 마음에...
-
이번에 고3 됐는데 오늘 뜬 2학년 생기부 봤더니 예전에 선생님이랑 저랑 같이 내용...
-
친구들 0
꽃길이었으면 해 우리들 새로운 시작이널 엄습하는 불안감도 이해가 돼서 난 가만히앉아...
-
배가 이상해요
-
열품타에 있는 사람들 보니 10시간 해도 적게한 것 같고 현타 와요..
-
저메추해주세요
-
다시 출근하기 전까지 뭐하면 알차게 쉬었다고 소문날지. 추천좀 ㅋ
-
어디까지임
-
단 하나의 깃털도 남기지 말고
-
평반고 생기부 상타치인데 3학년 거의 버릴거라 3후 뜰 거 같아요 홍대 이상 스나는...
-
얘 뱃살 ㄹㅇ 개귀여움 14
말랑말랑할 듯
-
참 자유분방하게도 썼다 저 시절은 저렇게 쓰는 게 기본이지 않았을까
-
뭔 날인가 했는데 삼일절이네
-
수능 보는건 아니고
-
내가 말도 안되는 뻘글을 써도 다 댓글을 달아 준다는거임...
-
열심히 준비해갈 자신은 있는데 학생이 제 설명을 제대로 이해할지가 자신이 없어요ㅠㅠ...
-
3개 풀고 3개 분석하고 3개 강의 들으면 4,5시간은 잡아먹는데 진짜 더 해야해요?
-
4 후반 5 초반 나올 거 같은데 정시에 타격 큰가요?
-
뇌절
-
국어 공븐 살면서 거의 해본적 없음 중학교때 학원에서 언매 강의 들어보고 고1땐...
-
통장 잔고 증발 1
다 사라졌다
-
솔직히 이세상에는 천재들이 널리고 널림 롤체만 봐도 마스터 그마 챌 이런사람도 많고...
-
집독재 어떰? 3
강기분 독서 아직 안들었고 강의좀 많이 들을 시즌이여서 그냥 집에서 편하게 듣는게...
-
비율관계 딸깍 ㅈㄴ예쁜 미분, 적분 근과계수 딸깍 변곡점 찾기를 보여주고 싶구나
-
친구들은 내 추천으로 사탐런을 하지만 난 과탐스테이를 하는 아이러니한 상황 현역이라...
-
진짜 서울대 수리논술 신설해주면 안되나 ㄹㅇ
-
그동안 영어 레슨비&운동학원등록비&식비&생활비가 많이 들었는데 이번 2월 역대급으로...
-
근 6년간 인구수 감소로 인한 입결몰락 효과에다가 지방이라서 입결몰락 되는 효과까지...
-
불끈불끈 14
불끈버거
-
의미 있는 날들에 평소보다 많이 하는 편인가?
-
생각보다 남3 여1 조합이 많네요
-
윤석열 탄핵 솔직히 16
..... ..... ..... ..... ..... ...... ........
-
저녁 ㅇㅈ 27
-
수능 국어 21
과외 해보거나 받아보신 분 있나요?? 국어는 과외 처음해보는데 뭘 해줘야 애가...
-
아니근데진짜 7
너 예쁘다니까~
-
공부하면 생각하는 힘이 생겨서 나중에 취업을 하건 주식투자를 하건 도움될거...
-
ㅈㄱㄴ 나때부터는 안 되려나...
-
의외로 없는것 2
대구대학교 한의예과 의외로 있는것 대구한의대학교
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.