Signed / Unsigned 의 비교

Language/C 2019.08.24 11:18 posted by TechNote.kr


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 를 의미한다.