자바에서는 unsigned int를 어떻게 정의하나요?


자바에 unsigned int를 정의하는 방법이 있나요? 자바에서 unsigned와 같은 의미를 가지는게 뭔가요? 지금 String.hashcode를 보고 있는데 여기서 32비트 unsigned int의 충돌가능성을 보고 싶습니다.

  • 2016년 02월 07일에 작성됨

조회수 1285


1 답변


좋아요
0
싫어요
채택취소하기

기본적으로 자바에서 unsigned integer는 없습니다. 더 큰 양의정수를 얻고 싶으시면 int 대신에 long을 쓰시면 됩니다. 하지만 음수를 제외시키는 방법은 없습니다.
하지만 Java8 부터 Integer나 Long클래스에서 unsigned를 다루는 메소드가 몇개 추가되었는데,

    // Java 8
    int vInt = Integer.parseUnsignedInt("4294967295");
    System.out.println(vInt); // -1
    String sInt = Integer.toUnsignedString(vInt);
    System.out.println(sInt); // 4294967295

    long vLong = Long.parseUnsignedLong("18446744073709551615");
    System.out.println(vLong); // -1
    String sLong = Long.toUnsignedString(vLong);
    System.out.println(sLong); // 18446744073709551615

    // Guava 18.0
    int vIntGu = UnsignedInts.parseUnsignedInt(UnsignedInteger.MAX_VALUE.toString());
    System.out.println(vIntGu); // -1
    String sIntGu = UnsignedInts.toString(vIntGu);
    System.out.println(sIntGu); // 4294967295

    long vLongGu = UnsignedLongs.parseUnsignedLong("18446744073709551615");
    System.out.println(vLongGu); // -1
    String sLongGu = UnsignedLongs.toString(vLongGu);
    System.out.println(sLongGu); // 18446744073709551615

이런 식으로 쓰시면 됩니다.

  • 2016년 02월 07일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close