컴공 일기252
게시글 주소: https://a.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때 부산대 영문과 쌤한테 시급 3만원에 영어과외 받았는데 시급 높은건가여??
-
사실 착각이 아니라 제대로 짚었을 확률이 매우 높은데 날 좋아하는 애가 있는 것...
-
표점도퍼주는우리경제로오세요 일단나는수특주문완료함
-
여우패밀리는 언제나 당신을 기다립니다!!!!
-
근데과외시급 0
준비하는 시간도 있는 거 아는데 그거까지 시급으로 치면 최저도 안나온다고 뭐라하는...
-
주식 시발 0
10만원 버는 기간 1주일 90만원 떨어지는 기간 2일 국장은 정신병을 유발한다.
-
?
-
개같이 물려버렸네
-
지구 2등급컷 3
지1 1컷이 오를거 같다는 예측이 많은데 2컷은 어떨 것 같은지 투표 한 번씩만 부탁드립니다
-
줄어드는 2
통장잔고를보니 씁쓸하구뇨
-
아 연애 ㅈㄴ 하고싶다 14
-
맘에 들면 10000덕
-
5월 더프때 0
라인에 내가 원하는 학교가 안정이었어서 올핸 진짜 갈 절 알았는데 하
-
누가 또 탈릅했어
-
3만덕따리라 우러써
-
언제나와요?
-
화지러인데 지구는 할 것 같고 화학 올해 수능 50점인데 계속하고 싶지만 이 과목을...
-
아름다우신 선생님들이 너무 많다 물소 공부법으로 2026 수능 승리 쟁취하자
-
제 과외쌤이 3.3 받으시는데(이것도 최근에 올려드린 값) 다른 분들 보니 좀 적은...
-
아직 대학을 안 가봐서 모르겠는데 그건 기본 중의 기본 아닌가...?
-
김기현 이미지 2
4등급 기준 미친개념이랑 아이디어 중에 뭐가 더 쉬울까요?
-
해야한다고 생각해요....! 게시글하나에 50덕은 적어요! 오르비 활성화에 힘써주시길 .
-
물1vs 물2 4
어떤게 1등급 받기 쉬움v
-
1. 출결 20% 때려박는 교수 2. 에타 강의정보에 “조별과제 보통~많음”인 교수...
-
전적대 낙지 9칸 10
-
투명매트리스 4
첫침대에요 방금조립함
-
경제해보셈 계산만빨리되면 생각보다쉬운과목임 공부량도적고 그니까다들경제런해주라...제발
-
흐흐 마쳤다 4
-
개재밌잖아 이거
-
택도 없는 점수지만 갑자기 궁금하네
-
500넘은적은없는데 흠.....
-
없을까요... 아니면 9평 때처럼 백분위95 터진1이라도
-
기차지나간당 3
부지런행
-
올해도 역시. 4
일행 5급수석이 고대에서나왔구나.찬양하라.
-
아.
-
지혼자 기출 6평 9평 저격하는 과목인데 고작 사탐런 있다고 컷이 달라질 과목이 아님
-
이런미띤 ㅋㅋ 이거 극복가능한거임?ㅋㅋㅋㅋ
-
텔그 ㅇㄸ? 7
표본 적어서 안쓸까 생각하고있는데 낙지랑 비교해서 좋은 점좀 알려조
-
언미영생지 국어 원점수 94(공2 선1) 수학 원점수 92(공2) 영어 원점수 92...
-
만약에 내신 4.xx라면 반올림하는 건가요? 아니면 그냥 소수점은 버리나요?
-
조교나 지원해볼까 근데 생각해보니까 또 서연고 메디컬 아니몀 안뽑아주려나
-
생1 공부 안해도 댐 생2 쌩노배임 무휴학 반수 때릴거고 수의대 목표임 +서울대...
-
계속 이야기하지만 학원을 못따라가서 구하는 경우가 많기때문에 준비를 산더미만큼 해서...
-
아니면 이주호 사퇴
-
확통 92인데 6
백분위 몇나올거같음??
-
무지성희망편 100/93/2/100/97 희망편 99/92/2/99/96 무난편...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다