2011.05.29 16:54
show()를 꼭 합시다.


오랜만에 코딩하면 의외로 많이 생기는 문제...
신고
Posted by JAVA_HOME

댓글을 달아 주세요

2011.05.28 20:57
자바에서는 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


그러나, 비트연산의 경우는 다음과 같이 계산되어 원하는 결과를 얻을 수 있다.

0xFF : 00000000 00000000 00000000 11111111
                                                11111000
------------------------------------------
결과 : 00000000 00000000 00000000 11111000




출처 : http://kimgisa.net/241




C보다는 JAVA를 쓰니 비트연산같은것은 까막눈이군요 -_- 퍼온자료입니다. 출처는 위에 있습니다. 
신고
Posted by JAVA_HOME

댓글을 달아 주세요

2011.05.23 20:39
신고
Posted by JAVA_HOME

댓글을 달아 주세요


티스토리 툴바