정수, 양의 정수, 음의 정수 관련 질문.
글쓴이: cpro / 작성시간: 월, 2015/06/01 - 2:37오후
최근 C 프로그래밍 공부를 시작한 초보인데, 궁금한 점이 있어서 질문 올립니다.
4bit를 기준으로 문의 드리자면...
일반적으로 1111이라고 하면 2의 4승으로 16이라고 하며, 이는 양수 16을 의미한다고 생각합니다.
그런데, 양의 정수를 표현할 때, 맨 왼쪽 비트는 부호비트라 하여 양의 정수를 표현하려면 0111으로 양수 8을 표현한다고 하더군요.
그러면... 4bit 기준으로 양의 정수는 8까지만 표현할 수 있는 것인가요?
부디 친절한 설명 부탁 드립니다.
감사합니다.
Forums:
C를 기준으로 하면 각각의 정수형 자료에는
C를 기준으로 하면 각각의 정수형 자료에는 signed와 unsigned 두가지가 있습니다(signed short, unsigned short 등).
char 를 제외하고는 명시하지 않으면 signed입니다. 즉 그냥 int라고 쓰면 signed int라고 한것과 같습니다.
signed는 1비트를 부호 비트로 사용하는 자료형이고 unsigned 는 부호비트를 사용하지 않고 양수만을 저장하는 자료형입니다.
따라서 unsigned는 음수를 나타낼수 없는 대신 signed의 최대값보다 2배 큰 양수까지 나타낼 수 있습니다.
즉, 적으신 경우에 대해서 말씀드리면 적으신 4bit자료형이 signed이냐 unsigned이냐로 최대값이 0111이냐 1111이냐가 정해집니다.
위에 다른 분이 이미 설명해주셨으니 됐고, 이건 그냥
위에 다른 분이 이미 설명해주셨으니 됐고,
이건 그냥 잠시 혼동하신 문제 같긴 한데 2의 4승은 10000 이고, 1111은 그보다 1 적은 수니까 15이죠.
만일 최상위 비트를 부호비트로 쓰는 signed int라면 1111은 -1이고, 가장 큰 양의 정수는 0111 = 7입니다. 8이 아니라.
좋은 하루 되세요!
댓글 달기