자바나, C나, C++이나, 자바스크립트나, 어디서든 내가 공부할때마다 종종 나오는게 signed, unsigned라는 키워드였다.
늘 글을 볼때마다 대충 이해하고 넘어갔는데 다른 공부하다가 또 나오면 막상 이게 뭐였더라.........
도저히 안되겠다 싶어. 정리좀 해야겠다.
나에게 이해하기 쉽게 하도록 나는 '음수를 표현하고 안하고의 차이'다 라고 머리에 이제 집어 넣었다.
Signed : 부호를 가지는 값 (양수, 음수의 구별 OK)
Unsigned : 부호를 가지지 않는 값 (오직 양수 OK)
정리하자면 이렇다. 그럼 약간 세부적으로 들어가서 한번 알아보자
signed char
unsigned char
이렇게 각각 8비트 타입이 있다고 하자.
signed는 음수표현까지 포함을 하기때문에 2의 보수 체계를 사용하고 있고 부호를 구별하는 부호 비트인 MSB가 필요하다.(MSB가 0이면 양수, 1이면 음수)
unsigned는 저런 부호 비트가 없기때문에 음수는 표현하지 못하지만, 그만큼의 양수의 범위를 두 배로 더 늘리는 역할을 하게 된다.
즉 char 타입은 8비트이기때문에
signed char은 -128~127의 범위 표현이 가능하게 되고
unsigned char은 0~255의 범위 표현이 가능하게 된다.
숫자 3을 1바이트를 2진수로 한번 기록해보자. (3은 2진수로 00000011 이 된다.)
Unsigned는 다음과 같이 할당된다.
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
Signed는 음수를 표현해야 하기 때문에 제일 앞 비트인 MSB를 하나 소비한다.
(3인 양수라 MSB가 0 이지만 음수라면 1이 될것이다.)
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
'JAVA' 카테고리의 다른 글
자바 접근자(public, private, protected, default) 등등... (0) | 2013.10.11 |
---|---|
퍼스펙티브(perspective) (0) | 2013.10.01 |
getInstance, 싱글턴 패턴(Singleton Pattern) (0) | 2013.04.01 |
jericho parsing(제리코 파싱)맛보기... (0) | 2012.07.19 |
JSON 형식 맛보기 ... (0) | 2012.07.19 |