Life Logs && *Timeline

  • 프로그래밍 언어의 기본 데이터 타입 비교

    프로그래밍 언어마다 기본 데이터 타입의 크기와 범위가 다르며, 이는 메모리 사용과 연산 방식에 영향을 미칩니다. 여기서는 각 언어의 작은 정수 타입(byte 등)을 중심으로 비교해 보겠습니다.

    Java의 byte 타입과 연산 특성

    Java에서 byte는 8비트 부호 있는 정수로, -128부터 127까지의 값을 저장할 수 있습니다. Java에서 특이한 점은 byte 변수끼리 연산할 때 자동으로 int로 타입 변환(promotion)이 일어난다는 것입니다.

    javabyte a = 3;
    byte b = 5;
    byte c = (byte) (a + b);  // 캐스팅 필요

    위 코드에서 a + b의 결과는 int 타입이 되므로, 이를 다시 byte 타입의 변수에 저장하려면 명시적인 캐스팅이 필요합니다. 이는 Java의 타입 시스템의 특성으로, 모든 Java 버전에서 일관되게 적용됩니다.

    다른 언어의 작은 정수 타입 비교

    **C/C++**는 signed char(-128127)와 unsigned char(0255) 모두 제공하며, 크기는 1바이트입니다. Java와 달리 부호 없는(unsigned) 버전도 제공합니다.

    Python은 고정된 크기의 정수 타입이 없으며, 자동으로 확장되는 int 타입을 사용합니다. 메모리 제한까지 거의 무제한의 정수를 표현할 수 있습니다.

    **C#**은 Java와 유사하지만, sbyte(-128127)와 byte(0255) 두 가지를 모두 제공하여 부호 있는 버전과 부호 없는 버전을 모두 지원합니다.

    JavaScript는 기본적으로 정수 타입 구분이 없으며, 모든 숫자는 64비트 부동소수점으로 처리됩니다.

    Goint8(-128127)과 uint8(0255)을 제공하며, 크기는 1바이트입니다.

    Rusti8(-128127)과 u8(0255)을 제공하며, 크기는 1바이트입니다.

    Java의 가장 큰 특징은 다른 많은 언어와 달리 부호 없는(unsigned) 정수 타입을 제공하지 않는다는 점입니다. 따라서 0~255 범위의 값이 필요할 경우, Java에서는 byte 대신 short나 int를 사용해야 합니다.