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

조회수 27623회

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

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
    

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)