컴공 일기253
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. 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를 선물하세요.
-
도서관 가서 실모 한 5개만 풀고올까
-
진학사 칸수는 비슷했는데 어디가 나을까요
-
강기본 듣고있고 끝나면 강기분 들으려고 하는데 언제 들으면 될까요?
-
한 번 사는 인생 이 정도 각오도 안 했으면 애초에 시작도 안했다
-
사기업은 이미 못가는거 아닌가 공기업은 가능함?
-
미필 5수 슈웃 10
Sky도 못가며
-
확실히 법대가 강했던 설대, 고대, 성대가 인상 깊네요 ㄷㄷ
-
사탐런 공대 4
지금 건대고 그 위로 무조건 공대가고싶은데 (대깨공) 군수 + 과탐 원래 못함 으로...
-
5수생 부럽다 8
내가 5수만 됐어도 나이걱정 안했을듯
-
'될때까지 n수'
-
정시는 진짜 ㄹㅈㄷ인게 16
지금상태에서 한문제를 더맞추면 설대낮과 써봄직한데 만약 한문제를 더 틀렸다면...
-
국어 인강 추천 0
풀커리 추천 부탁드립니다....! 추천 이유도 댓글에 써주시면 정말정말 감사할 것...
-
가군 붙었겠네 아하하하하하하하하하하하하하하하하하하
-
나가죽을게
-
난한마리의미친개 리트풀다미쳐서개가되어버렸어
-
입갤 5
-
1월 15일에 중앙대 최초합격자 발표합니다 쓰신 분들 까먹지 마세요
-
외대 소수어과 점공 표본수가 아직도 19명인데 원래 이렇게 적나요? 너무 적어서...
-
일상 생활은 안하나
-
보통 힉교선생이 하라는대로 하는게 대다수인 친구들은 허수거나 개고수이거나.. 보통...
-
이번 편은 제가 이번 학기에 '인공지능 윤리'라는 수업에 발표한 내용을 바탕으로...
-
다소의역) 이전탑들은 자원을 투자해야 능력치를 낸다 2
??? : 자원이 투자되지 않은 상황에서도 최대한의 포텐셜..어쩌고..
-
초반 노래 분위기랑 후반분위기가 ㄹㅇ개달라서.. 개좋음
-
수능 그 자체를 목적으로 생각하면 왠지모르게 기대되고 즐거움
-
점공 좃망 ㅋㅋ 2
12명 중 12등 대성패스 사러감 ㅅㅂ
-
오늘은 할 일이 0
너무 많네요...ㅠㅠ 헤르미온느가 되.
-
지금 미적 강기원 공통 장재원 듣고 있는데 장재원쌤 과제 량이나 난도나 퀄리티는...
-
오늘 하루도 힘차게 살아보자고!
-
확통 쎈b 풀려는데 1. 첨풀땐 딴데다 옮겨풀고 2회독할때 전문항을 다시품? 2....
-
좋아요 구독 부탁드립니다.
-
토-일-월 3일동안 1/6수강 => 18일완강 가능 => 1월에 끝
-
점공인원이 줄더니 내가 2등 올랐어 정말뭘까
-
퇴근했을때도 그렇고 나중에 계좌에 돈 들어오고나면 일하길 잘했단 생각이들어요 열심히하고와야지
-
이런
-
점공 그만들어와라 11
들어올거면 내 뒤로 들어와 미친놈들아
-
배꼽이 없단 걸 의식하고 걱정하지 않으려고 용을 쓰는데 뜻대로 안되는 주인공처럼...
-
매운거먹고싶다 12
속이 근질근질하구먼
-
같은 팀원들 점수 깎인다고 걱정해주던데 ㄹㅇ 착한 도람쥐임....
-
"부처를 만나면 부처를 죽이고, 조사를 만나면 조사를 죽일 것이며, 아라한을 만나면...
-
오늘 안 상식 2
베르무트는 와인이라서 냉징보관을 해야한다
-
알바가기 귀찬아 2
ㄹㅇ그냥 퍼질러자고싶음
-
낼모레는 가네
-
얼버기 5
-
이제 자러가야지 1
좋은 밤 되세요
-
하지만 잇올을 간당
-
ㅇㅂㄱ 9
-
5~6등급인데 션티 들으려고합니다.
-
밖에나가서 공부할라믄 돈이드니까 돈을 최대한아끼려면 집에서 공부해야하는데 집에서는...
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다
문제가 워낙 방대해서 문제를 다 풀진 않았습니다만, 내용 같은 경우는 완독했습니다. 다름이 아니라, 수업에서 채택한 교재였어서 아무래도 디테일하게 읽을 수밖에 없었죠.
다만, 시험이 아닌 공부적 관점에서는 헷갈리거나 모르는 것들 위주로 발췌독하는 것이 좋을 듯 합니다. 논리회로 특성 상, 컴퓨터 구조와 연관성이 아주 긴밀하기 때문에 컴구에서 회로적 관점에서 헷갈리는 부분이 있을 때 자주 발췌해서 봤죠.