블로그 이미지
GUCCI

카테고리

전체보기 (111)
여행 (1)
기기 (2)
쇼핑 (0)
게임 (0)
etc. (6)
취업이야기 (0)
업무일지 (5)
리눅스 (38)
웹프로그래밍 (2)
네트워크 (4)
JAVA (17)
Android (0)
IOS (2)
LUA (8)
C/C++ (1)
Objective C (2)
SERVER (2)
그누보드4 (1)
MSSQL (2)
Programming (1)
자바스크립트 (4)
HTML/CSS (1)
LGNAS (0)
Total
Today
Yesterday

'java unsigned'에 해당되는 글 1건

  1. 2012.02.09 java unsigned 2

java unsigned

JAVA / 2012. 2. 9. 10:57
예를 들어, int에 들어 있는 -1 이라는 숫자를, unsigned형으로 표현하면 4294967295 가 되는데, 이런 변환 작업을 자바에서 하려면 아래 예제의 unsigned32() 라는 메소드(함수)를 사용하면 됩니다. 자바에서는 unsigned형으로 형변환(Typecasting)하는 캐스트 연산자가 제공되지는 않습니다. unsigned형 자체가 없기에...

자바의 int에는 2147483647 이상의 숫자를 넣을 수 없으므로, unsigned32()는, int가 아닌 long형으로 반환합니다. (물론 자바의 long형도 unsigned형은 없지만, 64비트 정수이기에 천문학적인 정수를 대입할 수 있습니다.)
 
public class Example {
  public static void main(String[] args) {

    System.out.println( unsigned32(-1) );   // 4294967295
    System.out.println( unsigned32(-2) );   // 4294967294
    System.out.println( unsigned32(1) );    // 1
    System.out.println( unsigned32(0));     // 0

    System.out.println( unsigned32(0xFFFFFFFF) );  // 4294967295 (부호 없는 32비트 int형의 최대값)
    System.out.println( unsigned32(0x7FFFFFFF) );  // 2147483647 (부호 있는 32비트 int형의 최대값)

    System.out.println( unsigned32(0x7FFFFFFF - 1) );  // 2147483646
    System.out.println( unsigned32(0x7FFFFFFF + 1) );  // 2147483648
  }


  // int를, unsigned형 long으로 변환 메서드
  public static long unsigned32(int n) {
    return n & 0xFFFFFFFFL;
  }


}




일단 JAVA가 C/C++의 unsigned 를 지원하지 않는건 맞구요,
그런 문제가 발생한다면 아래와 같은 식으로 해주시면 됩니다.

int val = myByte < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + myByte : myByte;

코드를 보시면 왜 저렇게 써야하는지는 이해를 할 수 있으리라 보네요.
log 의 경우에도 이런식으로 하시면 될것 같구요, 그리고 특별히 
Byte, Integer, Long 등의 래퍼클래스의 MAX_VALUE나 MIN_VALUE를 넘지 않는 한은
특별히 신경쓸 이유도 없습니다.(당연하겠지만...)

저도 정확히는 알 수 없습니다만, 자바에서는 자체적으로 BigDecimal 등을 이용해서
C보다 더 큰 숫자를 표현할 수 있는 방법을 제공해 주기 때문에 굳이 C처럼
unsigned 를 지원할 필요가 없다고 생각한게 아닐까요? 라는 생각을 해봤습니다.  

'JAVA' 카테고리의 다른 글

웹로직의 DB 자원 회수(Inactive Connection Timeout)  (0) 2013.11.19
JDK 다운 설치  (5) 2012.02.16
세션이 생성되고 관리되는 과정  (3) 2011.08.12
중복로그인 체크  (2) 2011.08.12
java 형변환 모음  (1) 2011.04.06
Posted by GUCCI
, |

최근에 달린 댓글

글 보관함