728x90
signed 의 경우 양/음수를 표현할 수 있는 변수형으로 알고 있고, unsigned 의 경우 양수만 표현할 수 있는 것으로 막연히 알고 있었는데, 코드로 실제 비교해 보았다.
#include <stdio.h>
int main()
{
signed char a = 0xFF;
unsigned char b = 0xFF;
printf("a = %d\n", a);
printf("b = %d\n", b);
}
[결과]
a = -1
b = 255
2진수 (16진수) | 10진수 (signed char) | 10진수 (unsigned char) |
1111 1111 (0xFF) | -1 | 255 |
signed char 의 경우
이진수 1111 1111 중 MSB (Most Significant Bit) 는 부호 표현을 위해 사용된다.
이에 2의 보수법으로 표현된 음수를 의미하고 있으므로 -1 을 의미한다.
unsigned char 의 경우
이진수 1111 1111 는 모두 숫자 표현에 사용된다.
이에 255 를 의미한다.
728x90
'Language > C' 카테고리의 다른 글
Type casting 시 주의해야할 점. (signed, unsigned) (0) | 2016.07.04 |
---|---|
sizeof - 함수가 아닌 연산자. (0) | 2016.07.04 |
memset - 하위1byte pattern 의 이해 (2) | 2016.07.01 |