컴공 일기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를 선물하세요.
-
D-234 1
영어단어 영단어장-day2 복습 기존에 쓰던 레스큐 단어장을 놓고와서 어휘 끝...
-
안자는 사람 1
덕코 줌
-
걍 할 말이 없네..
-
수면 2
5시간이면 충분하지?
-
강아지 0
발팀
-
동서남북 0
헷갈림
-
서버에러.. 1
-
개발팀 나와!! 2
오류 뭐지 ㅜㅜ
-
무한 vs 0 머임?
-
66+X=(12+X)×4 66+X=4X+48 X-4X=48-66 -3X=-18...
-
이거 4
66+X=(12+X)×4 66+X=4X+48 X-4X=48-66 -3X=-18...
-
즐옯하세요 1
먼저 잡니당
-
짜파게티 먹말 8
11시에 일어남
-
상당히 엽기적이긴 한데 내가 기하를 잘 못해서 글쓰기가 조심스러움 + 그때 약연님이...
-
인발리드 구글 로그인 어쩌고 저쩌고…
-
작수 영어3등급 이명학으로결정햇는데 일리부터 듣는게 좋을가요? 18
뭐부터 듣느게나을가요?
-
이것도 과시임?
-
그 중 2명이 탈주친거 보고 난 시발 시도도 안하는중임 근데 드가서 버틴애는 평균...
-
소설이랑 상식책 몇개 들고 가려는데, 공지에는 화장품이랑 염색 ,소설책 안된다고...
-
빨리 거기서 탈피할 생각을 해라 -주우재-
-
본인 재수때도 야구빼고 걍 아무것도 안함 취미생활 N수때 취미생활 하나정돈 ㄱㅊ은듯...
-
치카치카 0
귀찮아
-
그래서 2회독이 의미가 있긴한가싶음 사실 검더텅 다 풀고 리트풀까...
-
한지 세지 1
중 하나를 선택하려고 하는데, 만점 받기 뭐가 더 좋나요? 현재는 노베입니다....
-
사실 저정도 말고 딱히 엽기적인 풀이를 써본적은 없음 5
이거 9차함수 풀이는 나중에 시간나면 한번 연구해봄...
-
이로운 2-1 6
58분 100 미적 30번 문제 맘에 드는듯
-
마더텅 풀고 있는데 맨날 똑같은 재제만 푸니까 이게 맞나 싶음 2회독 할 땐...
-
발닦개 3
투표 ㄱㄱ
-
수학과 없나보네 0
쩝
-
잔다. 4
굿나잇
-
1+1는 왜 2에요
-
급 궁금 4
왜 1+1은 2에요?
-
범바오 강의 올릴생각을 안하는데
-
앞으로 수학 칼럼은 엽기적인 풀이법 위주로 올리겠음 10
안녕하세요 엽기카와 솔루션의 오이카와입니다. 엽기적인 전략이 실패할 경우 적절한...
-
독서라뇨 2
비문학이라고 해주세요
-
아 내일 1교시 0
문제는 1교시만 있다. 뒷강의가 휴강이어서 참 뭣같다
-
241128 8
나 왜이거도 첨이지 기출 왜케 안풀어봣지 나
-
지금 지하철 타고 통학 1시간이고 그냥저냥 할만한데 이번에 들어간 스터디가 주...
-
내일 생1 유전 강의만 5개 봐야한다. 복습은 덤이다. 벚꽃지기 전에 수특 해야 하는데 언제 하냐
-
독서 노베 친구한테 10
얼마전에 공부법 알려주고 내가 쓴 칼럼 공유해줬는데 진짜 내가 말한 대로 해줘서...
-
씨발 레전드다 ㅋㅋ 나가 뒤지자 얼른
-
한비자 이런거 정보량 쏟아지는게 진짜 어렵더라 잘 정리해서 읽은거 같아도 문제 풀때...
-
ㅈㄱㄴ
-
나를 차단했네 ㅋㅋ 다들 안된다 할때 ?
-
내신 할때는 보통 소수과목이지만 무조건1받자 내가 지금 남보다 조금 느리게 풀면...
-
대학어디가 + 내신닷컴 두개로 보고있는데 대학어디가는 너무 짜고 내신닷컴은 너무...
-
음 안돼. 안돼요. 그건 될 수 없어 X. 하지 마
-
[엽기카와 매뉴얼] 230622 로피탈로 극한식 해석하기 4
로피탈로 풀기라고 하기엔 극한식해석 반 f(x)찾기 반이라 극한식 해석하기라고 함...
-
진짜
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.