컴공 일기252
한 번쯤은 생각해 볼 법한 예제라서 가져왔습니다. 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를 선물하세요.
-
수면매매 시작 6
기술적취침 익절가설정하고잘예정
-
언미화1생1 원점수 71+22(93) 70+18(88) 3 48 41 고대가능?...
-
난 잘잘게
-
기하 1틀 8
기하 30번 1틀인데 내년 수능 확통으로 돌릴까요? 스카이 목표입니다
-
수1특강이고 목동시대ㅠㅠ 특강이라 라이브 안된다는데
-
전 수학이 힘들어요… 국어는 고3 때 3등급에서 어찌저찌 올려놨는데 수학은 도통 쑥 안 오르네요ㅠㅠ
-
저도 따라가겟음뇨
-
연애하고싶다 1
ㅜ
-
32번인데 들을수 있나요 이거?
-
ㄷㄷㄷ
-
개꿀잠 잠 1
레전드
-
수험생 52만명+a가 아는데 이거 쓰면 모욕적 표현으로 인정될까??
-
괜히 경제같은 이상한 과목같은거 하지마셈… 생윤이 정 하기 싫으면 정법까진 ㄱㅊ은듯
-
개깨끗하고 시설좋고 책상 크고 세면대 물 따끈하고 흡연하는 곳 바로 옆에있고 주변이...
-
123은누가봐도개소리고 4아니면5인데 4는계산있어보이니패스 5는상황1은누가봐도플러스...
-
4시쯤 누우면 되겠다.
-
님들이라면 어디 쓸거같음요?
-
적금통장만들고 0
돈좀 모아바야지 아니 통장에 돈이 있으면 무조건 다쓰는 스타일이였어 내가
-
저도 현역 때는 건동홍만 보내주면 난 입시판 뜨지 이랬고 외대 논술보고 하루에 한...
-
이정도했으면 좀 뒤져야하는거 아닝가 ㄹㅇ 바디은퇴까지 볼 생각임?
-
오야스미 0
네루!
-
왜 난 이럴까? 물음표로 수놓인 밤하늘나를 내려다 보는 star괜히 오늘따라 더...
-
올해가 마지막이라든데 장사가됨. ?
-
절대 함격 불가죠?
-
‘ ‘와 어떻게 5수를 할 수가 있지..? 진짜 말도 안되게 힘들 것 같은데’ 이리...
-
잠이 안온다 1
잠이 안옴
-
끼잉끼잉 3
-
덕코 기부 좀 2
따서 2배로 갚겠음 그 넓고도 깊은 은혜 절대 잊지 않겠음 전에 주신 분들도 내가...
-
25년도라고 저렇게 깔맞춥했네 ㅅㅁ
-
교수님이가르치다가 자연상수언급하는데 학생들이그거안배웠다하니까 아니이걸몰라요?라고하며충격받았었음
-
시발점 개정 0
시발점 개정이랑 지금꺼 별로 차이가 없나요
-
250은 그냥 깨지네 옷사고 뭐하고 하면 300은 깨지는거네 흐음 ㅜ
-
그래서 전 직접 만지고 있어요. 냄새도 좋아요.
-
수갤 시절 문학인데 진짜 잘 만든듯 그보다 중3때 광운대 봤는데 이쁘더라
-
하
-
06이며 이번 수능은 미적선택하여 68점 나왔고 우선 미적은 시발점부터 다시 할...
-
달러에서원화로환산할때 뒤에14만곱해주면돼서 계산편함
-
과목 장점으로 말장난 없다는 걸 내세우는 건 궤변임 7
평가원이 마음만 먹으면 바로 양질 구분, 다중부정, 필연개연으로 선지 다 흔들어놓을...
-
설머 -> 기회와 운, 실력 삼박자가 다 맞아야 갈 수 있는 천재일우의 대학. 신 그 자체.
-
항상 재수 때부터 서성한 이상이 목표였기 때문에 올해는 꼭 가고 싶은데 하… 올해...
-
사교육 카르텔 처치 한번만 해주세요 국어만 1 뜨면 진짜 치대 될거같은데.. 이것만...
-
쌩삼하게되면 5
공스타해야겠다 천명팔로워가목표야아
-
시골의 기준이 뭘까
-
독서 인강 추천 2
문학은 강민철 할건데 독서도 강민철쌤 할까요? 대성, 메가패스 있습니당
-
추합은 될 수 있으려나요 허허이,,
-
“지속 가능한”
-
투과목은 왜 3
2컷 3컷이 10점차가 나는거냐
-
수능 끝나고 보니 그냥 씹황엘리트goat 그 자체네요 저길 수능으로 간다고?
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다