컴공 일기252
게시글 주소: https://h.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를 선물하세요.
-
2025 김승리 언매 한 바퀴 돌렸고 언매 겨울에 한 번 더 돌릴 생각인데...
-
제발 주작이었으면 좋겠다
-
안녕하세요 [Crux] 환동입니다. 2023~2025 크럭스에서 보유한 표본들을...
-
갑자기 인스타 dm으로 5수선언 조롱하는 새끼가 있네요 티격태격 노는게 아니라 찐...
-
"알몸 보려고 사우나 데려가" 北납치 블랙요원 26년만 고백 2
추천! 더중플-남북 스파이 전쟁 탐구 오늘의 ‘추천! 더중플’은 ‘남북 스파이 전쟁...
-
프사 바꾸면 5
나 못알아볼까봐 못바꾸겠네.. 안그래도 존재감 없는데
-
설의연의 메이저 인설의 설치연치 지방의 나머지치대랑 경한 각각 얼마씩 낼 의향 있음?
-
진학사 13
올해 대학을 일단 꼭 무슨 일이 있어도 가야겠습니다 삼수까지 한지라 대학을 걸어놓긴...
-
인스타 시작할까요 12
수능도 끝났는데 너무 재미없게사는듯뇨
-
I don't wanna die in the paradise~ 0
Just wanna die like a samurai~
-
만표 63은 에바잖아 진짜
-
얘! 동덕여대는 지지란다! 근처도 가지마렴~
-
10모 보고 담임쌤이나 나나 부모님이나 이건 됐다 했었는데 삼수하고도 점수가...
-
연봉 1억 1
기원ㅋ
-
지금은 사라졌는데 떠있길래 바로 교재 구매하고 오티까지 다 봤는데 지금은 사라졌네요 저만 봄??
-
이게 단순히 혜택 조금 빼는 어그로인지 가격인상인지 이제 구별이 안됨
-
야식 뭐먹을까요?
-
신청은 저 (Airfrance[IMIN 726684])에게 쪽지를 보내서...
-
야식 추천받습니다
-
왜냐? 내가그 만년하위권이었으니까 강민철 유대종 코동욱 다들어보고 사설간쓸개이런거...
-
제발 근데 진짜 벌써 얼마 안남았네.......
-
뿌듯하군요
-
좋구만 좋아 5
밤에 들으니 기분이 좋군요
-
4등급이 4
탐구 4등급이랑 영어 4등급 둘 중에 영어 4등급이 더 치명적이죠?
-
92731970592911180120561810061022901831 1
제 기억이 맞다면...
-
150분이나 잡혀 있던데 구체적으로 무슨 상담하나요? 진로진학상담이랑 표본분석 이런...
-
예비 고3 커리 2
국어 - 김승리 풀 커리 영어 - 이명학 션티 고민하다가 이명학 오티 듣다가 졸려서...
-
10792912273201123122514601417 덕코는 없음. 그러나 이게...
-
진학사 실채 나오면 살려고 존버중인데 고대 어문 쓰고 서성한 공대 같이 붙으면...
-
실제 성적표가 안좋게 나오면 어쩌지 싶어서 미칠거같음 4
진짜 미칠거같음 죽겠음
-
개념+기출 한번 하고 이제 n제 풀어보려 하는데 어떤가요?
-
오늘은 치팅데이 8
피맥이 최고
-
제발올해성불하게해주세요제발제발제발 하나님 아버지 예수 그리스도께 기원하옵나이다.. 아멘
-
게으름은 어케고침뇨? 20
이새끼 맨날 아 진짜 공부해야지 하면서 잠들고 다음날 일어나면 5분 깔짝대다가...
-
키가9등급인게서러움뇨
-
송하냥이 이륙 21
캬
-
수능보다 편입이 더 나음? 연고대까지는 편입이 나은것같은데 그 위부터는 모르겠음...
-
3월쯤인가ㅏ??
-
누구임뇨?
-
제발
-
현재 고졸이고 그냥 일하고 있었습니다 취미로 코딩을 하고 있는데 너무 적성에 잘...
-
고대되냐마냐 안절부절하는거랑은 차원이 다른 서러움이 몰려옴뇨 사람이 어떻게...
-
ㅈㄱㄴ
-
아닌게 이상하지 ㄹㅇ
-
얼었다... 4
-
나이 성별 축처진가죽을 뛰어넘은 진짜사랑
-
1~5권 사놓구 안보고있음...
-
ㅇㅇ??
-
화작 실수 한문제만 호머하면 이렇게되는데.. 아.
이런 공부는 무슨 책으로 어떻게 하면 될까요?
주로 컴퓨터구조 전공 서적이나, C 전공 서적을 참조하시면 공부할 수 있습니다. 추가적으로 여기에 사용되었던 부호화된 2의 보수법이나, 부호비트, 비트연산 같은 경우는 논리회로라는 과목으로도 충분히 커버할 수 있는 내용이지요. 한빛미디어에서 나온 <디지털 논리회로> 책을 한 번 일별해보시는 것도 추천드립니다.
양이 워낙 방대하긴 하지만, 쭉 읽다 보면 컴퓨터라는 게 어떤 방식으로 작동하게 되는지 개략적으로 알 수 있을 겁니다.
감사합니다!!
컴공주님 혹시 그 책 완독하셨나요? 방학때 전공 대비로 공부해보려 하는데, 혹시 읽어보셨다면 후기 적어주신다면 감사하겠습니다