반응형
Java int는 항상 32 비트입니까?
Java는 int
항상 어디서나 32 비트 부호있는 정수일까요?
예, Java 언어 사양에 정의되어 있습니다.
에서 4.2 : 원시 유형 및 값 :
적분 유형은
byte
,short
,int
, 및long
, 그 값이며, 8 비트, 16 비트, 32 비트 및 64 비트 서명 된 보수를 각각 정수로하고,char
값은, 16 비트의 부호없는 정수는 UTF-16 코드 대표 단위 (§3.1).
또한 섹션 4.2.1 : 적분 유형 및 값 :
정수 유형의 값은 다음 범위의 정수입니다.
- 바이트의 경우 -128에서 127까지
- 간단히 말해서 -32768에서 32767까지
- int의 경우 -2147483648에서 2147483647까지
- 오랫동안 -9223372036854775808에서 9223372036854775807까지
- char의 경우 '\ u0000'에서 '\ uffff'까지 (즉, 0에서 65535까지)
int
s는 32 비트입니다. 더 필요하면 long
s는 64 비트입니다.
Java 8은 부호없는 정수에 대한 일부 지원을 추가했습니다. 기본 형식 int
은 여전히 서명되어 있지만 일부 메서드는이 를 부호없는 정수 로 해석합니다.
Java 8 의 Integer 클래스 에 다음 메소드가 추가되었습니다 .
- compareUnsigned (int x, int y)
- divideUnsigned (int 피제수, int 제수)
- parseUnsignedInt (문자열 s)
- parseUnsignedInt (String s, int 기수)
- 나머지 Unsigned (int 피제수, int 제수)
- toUnsignedLong (int x)
- toUnsignedString (int i)
- toUnsignedString (int i, int 기수)
다음은 사용 예입니다.
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
보충적으로 64 비트 길이가 요구 사항을 충족하지 않는 경우 java.math.BigInteger를 시도하십시오 .
숫자가 64 비트 길이의 범위를 벗어난 상황에 적합합니다.
public static void main(String args[]){
String max_long = "9223372036854775807";
String min_long = "-9223372036854775808";
BigInteger b1 = new BigInteger(max_long);
BigInteger b2 = new BigInteger(min_long);
BigInteger sum = b1.add(b1);
BigInteger difference = b2.subtract(b1);
BigInteger product = b1.multiply(b2);
BigInteger quotient = b1.divide(b1);
System.out.println("The sum is: " + sum);
System.out.println("The difference is: " + difference);
System.out.println("The product is: " + product);
System.out.println("The quotient is: " + quotient);
}
출력은 다음과 같습니다.
합계 : 18446744073709551614
차이점 : -18446744073709551615
제품 : -85070591730234615856620279821087277056
몫은 다음과 같습니다. 1
참고 URL : https://stackoverflow.com/questions/1032982/is-a-java-int-always-32-bits
반응형
'IT TIP' 카테고리의 다른 글
왜 Mongrel2를 사용합니까? (0) | 2020.10.16 |
---|---|
마크 다운 테이블의 코드 문에서 파이프 문자를 이스케이프하는 방법은 무엇입니까? (0) | 2020.10.16 |
doxygen을 사용하여 C ++ 소스에서 UML 클래스 다이어그램을 만드는 방법 (0) | 2020.10.16 |
stringstream 재설정 (0) | 2020.10.16 |
Imshow : 범위 및 측면 (0) | 2020.10.16 |