컴공 일기253
게시글 주소: https://iu.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를 선물하세요.
-
성균관대 합격생을 위한 노크선배 꿀팁 [성대25][학점에 대해 잘모르겠어요] 0
대학커뮤니티 노크에서 선발한 성균관대 선배가 오르비에 있는 예비 성균관대학생,...
-
찐따썰 4
초1땐가? 학교에서 뒤에 오는 애 문 잡아줌 걔가 하필 여자애여서 반 전체가...
-
정규커리 타려고하는데 개념완성을 들은 후에 기출분석을 수강하나요 아님 병행하나요?...
-
고려대 수학교육과에서 1. 어떤 학과가 복전하면 후에 취업 시 유리할까요? 2....
-
어떻게 생각하시나요??? (문과 여자) 내년에 다시 대학을 입학하게 된다면 나이로...
-
막 지금 생각하면 얼굴 붉어지고 이불 걷어차고싶은..
-
뭔떡밥이얶는데 1
너동랄려2ㅝ
-
점공.. 0
국숭세 라인 공대인데 이정도면 추합으로라도 붙을확률이 있을까요?? 작년이랑...
-
점수공개는 보통 0
상위권이 하위권보다 많이하나요? 인원 들어올때마다 등수가 계속 밀리는데..
-
아~ 우이 꼬순내 맡고싶다!!!!!!!!!!!!!!!!!!!!!!
-
20명으로 계속 동결이네... 69명 지원에 24명 뽑고 11등인데 이거...
-
저 쌩삼 하려는데 님들 언제부터 시작할거임
-
30퍼밖에 안들어왔는데 나머지 전부 다 내 뒤로 들어와라 제발 ㅠㅠㅜ
-
과외알바를 생각하시는 분들을 위한 매뉴얼&팁입니다. 미리 하나 장만해두세요~~...
-
[단독] 與, 오늘 ‘송민호 방지법’ 발의 예정… 공익요원 전자 출퇴근 시스템 마련 10
국민의힘이 사회복무요원의 출퇴근 복무 관리에 전자 방식을 도입하는 이른바 ‘송민호...
-
아직도 무슨 메타가 돌앗던건지 모르겟다 저격메타엿던거같긴한데
-
고전
-
실제보다 높게 나오나여 낮게 나오나여?
-
매주승리는 0
매주승리 지문이랑 매월승리 지문 겹치넹...
-
395.5면 갈 수 있음?
-
제발요
-
지금 모집인원 -3인 등수인데 점공은 50% 정도 함
-
조기발표 질문 0
정시 조기발표 예체능 정시실기 끝나기전엔 안하죠???
-
오랜만에 일찍 잤더니 못따라가겠네
-
외대송도캠 0
25년8월 예정이라고 카카오맵에 적혀있는데 내년에 이전 예정인과들 이전된다는 말도는거있나요?
-
마샤와 곰 원어판 자막없이 보기 어릴땐 몰랐는데 러시아만화임
-
큰 의미는 없지만..
-
새벽에 뭔일이 잇엇길래
-
김기현 파데 3주차 이제 적분 단원들어감 앞에 급수 조금 씩 가물가물해지기...
-
김종익 개념책 가지고 공부하는데 여기서 따로 개념노트 간단히 만드는 거 어케 생각하시나요
-
요즘 매일 침대에만 잇늨데
-
1학년 자율세특 0
1학년 자율세특에 약물오남용의 실태와 해결방안 등에 대해서 쓰고 2학년 때...
-
뱃지 달렸나요 5
ㅎ
-
덕코 사용법 5
보닌만큼 모아서 자랑하고 다니면 뎀
-
시립뱃 받았다! 4
이제 다른 뱃지도 노려야지
-
ㅋㅋㅋㅋ
-
10시 오픈이네요
-
ㅇㅂㄱ 5
ㅈㄱㄴ
-
몇점이라고 보시나요 댓글 좀
-
실질적으로 뭐 할수있는거에요?
-
살면서 처음 공부해봤습니다 19년동안 공부안하다가 대학교가고싶어서 시작했는데...
-
도란선수에 대한 얘기임
-
맞팔 구해요! 4
드루와 드루와!
-
국어 5등급이고 모고 국어 아예 할줄을 모르는데 비문학 공부를 어떻게 해야하죠 그냥...
-
염병 번호 계속밀리네
-
맨날 쳐 자서 모름
-
강의 보니까 소설이나 시 강의에서 특정 작품은 한문장 자문장 읽으시면서...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.