자바에서는 unsigned 형이 없다.
0xF8 는 부호를 무시하면 248이지만, byte형에서는 부호비트가 고려되어 -8로 출력된다.
byte b = (byte)0xF8;
System.out.println(b);
----
결과
----
-8
원하는 결과를 얻기위해 이 byte형 변수 b를 int형 변수에 그냥 대입하게 되면,
역시 -248이 출력된다.
byte b = (byte)0xF8;
int i = b;
System.out.println(i);
----
결과
----
-8
일반적인 대입의 경우 산술적인 형확장이 일어나기 때문에 부호비트가 고려되며
byte의 첫번째 비트인 부호비트는 int형으로 형확장되면서 부호가 그대로 적용된다.
원하는 결과인 248을 얻으려면 다음과 같이 하면된다.
byte b = (byte)0xF8;
int value = b & 0xFF;
System.out.println(value);
----
결과
----
248
'Programming' 카테고리의 다른 글
| # NPTL (0) | 2008/05/29 |
|---|---|
| # [JAVA] byte형 변수를 부호비트를 무시 (0) | 2008/05/06 |
| # Code Kata (1) | 2008/01/16 |
| # CVS command list (0) | 2007/10/24 |
| # Ship it! 성공적인 소프트웨어 개발 프로젝트를 위한 실용 가이드 (0) | 2007/10/11 |
| # 프로그래머와 유치원생 (0) | 2007/06/12 |

Prev
Rss Feed