Java에서 Unsigned Int 생성

Rashmi Patidar 2023년10월12일
Java에서 Unsigned Int 생성

부호 있는 정수는 -1에서 -128까지의 양수 및 음수 값 범위로 데이터베이스에 저장됩니다. 이와 반대로 Unsigned Integers는 0에서 255까지의 음수 값이 아닌 양수 범위 값의 큰 집합만 보유합니다. 즉, 부호 없는 정수는 음수 값을 저장할 수 없습니다.

Java에서 데이터 유형 세트에는 서명되지 않은 int가 명시적으로 포함되지 않습니다. 그러나 사용 사례에 따라 다른 데이터 유형은 부호 없는 정수로 처리될 수 있습니다. Java는 더 큰 부호 없는 값을 저장하기 위해 long 데이터 유형을 제공합니다.

long 데이터 유형은 64비트 크기이며 내부적으로 2의 보수에서 작동합니다. Java 8 이상 버전에서 long 데이터 유형은 0에서 2^64-1까지의 값을 저장할 수 있습니다. 단순한 int 데이터 유형에 비해 더 많은 데이터 범위를 제공합니다.

다음은 두 데이터 유형의 크기와 차이점을 정의하는 코드 블록입니다.

public class Main {
  public static void main(String[] args) {
    System.out.println("Size of int: " + Integer.SIZE + "bits");
    System.out.println("Size of int: " + Long.SIZE + "bits");
    int signedInt = -2345678;
    long unsignedValue = signedInt & 0xffffffffL;
    System.out.println(signedInt);
    System.out.println(unsignedValue);
  }
}

위의 코드 블록에서 처음 두 문장은 IntegerLong 클래스의 크기를 인쇄합니다. 정수는 int 값을 보유하는 기본 데이터 유형입니다.

int의 크기는 32바이트로 인쇄되고 Long 래퍼 클래스의 크기는 64바이트로 인쇄됩니다. 클래스에는 래퍼 클래스의 크기를 나타내는 정적 및 최종 변수가 정의되어 있습니다.

print 문 옆에 두 개의 로컬 또는 클래스 변수가 정의됩니다. 변수는 intlong 데이터 유형입니다. 정수로 인스턴스화된 값은 음수와 양수 값을 모두 보유하므로 음수입니다.

long 변수에서 부호 있는 정수는 Bitwise & 연산자로 연산됩니다. 이진 형식으로 변환된 숫자의 2의 보수에서 작동합니다. 따라서 내부적으로 먼저 음수 값을 이진 형식으로 변환합니다. 두 이진 값 사이에서 두 값에 대해 논리적 & 연산을 수행합니다. 연산자는 결국 음수 값을 양수로 변환합니다.

위의 두 프로그램 라인의 출력은 아래와 같습니다.

Size of int: 32bits
Size of int: 64bits
-2345678
4292621618
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

관련 문장 - Java Integer