정수 데이터 타입

정수 데이터 타입 (Integer Data Types)

Octave는 double 정밀도를 대신해 정수 행렬을 지원해요. 8, 16, 32, 64비트로 표현되는 부호 있는 정수와 부호 없는 정수를 모두 쓸 수 있습니다. Octave 매뉴얼 4.4절을 정리해 볼게요.

출처: Integer Data Types

본문

Octave는 double 정밀도를 대신해 정수 행렬을 지원해요. 8, 16, 32, 64비트로 표현되는 부호 있는(signed) 정수와 부호 없는(unsigned) 정수를 모두 사용할 수 있습니다. 주의할 점은 대부분의 계산이 부동소수점 데이터를 요구한다는 거예요. 즉 정수는 수치 계산에 관여할 때 자주 타입이 바뀝니다. 이런 이유로 정수는 대개 데이터를 저장하는 데 쓰이고, 계산에는 잘 쓰이지 않아요.

일반적으로 대부분의 정수 행렬은 기존 행렬을 정수로 캐스팅(casting)해서 만들어집니다. 다음 예시는 행렬을 32비트 정수로 캐스팅하는 방법을 보여줘요.

float = rand (2, 2)
     ⇒  float = 0.37569   0.92982
                0.11962   0.50876
integer = int32 (float)
     ⇒  integer = 0  1
                  0  1

보시다시피 부동소수점 값은 변환될 때 가장 가까운 정수로 반올림됩니다.

isinteger

tf = isinteger (x)

x가 정수 객체(int8, uint8, int16 등)이면 참을 돌려줍니다. Octave의 숫자 상수는 double 정밀도 부동소수점 값이므로 isinteger (14)는 거짓이라는 점에 주의하세요.

See also: isfloat, ischar, islogical, isstring, isnumeric, isa.

int8 / uint8 / int16 / uint16 / int32 / uint32 / int64 / uint64

y = int8 (x)      # 8비트 정수로 변환
y = uint8 (x)     # 부호 없는 8비트 정수로 변환
y = int16 (x)     # 16비트 정수로 변환
y = uint16 (x)    # 부호 없는 16비트 정수로 변환
y = int32 (x)     # 32비트 정수로 변환
y = uint32 (x)    # 부호 없는 32비트 정수로 변환
y = int64 (x)     # 64비트 정수로 변환
y = uint64 (x)    # 부호 없는 64비트 정수로 변환

각 함수는 See also 로 서로를 가리켜요. 예를 들어 int8uint8, int16, uint16, int32, uint32, int64, uint64를 참고하고, 같은 식으로 이어집니다.

intmax

Imax = intmax ()
Imax = intmax ("type")
Imax = intmax (var)

특정 정수 타입으로 표현할 수 있는 가장 큰 정수를 돌려줍니다. 입력은 정수 타입을 지정하는 문자열 "type"이거나, 기존의 정수 변수 var예요. type에 가능한 값은:

  • "int8" — signed 8-bit integer.
  • "int16" — signed 16-bit integer.
  • "int32" — signed 32-bit integer.
  • "int64" — signed 64-bit integer.
  • "uint8" — unsigned 8-bit integer.
  • "uint16" — unsigned 16-bit integer.
  • "uint32" — unsigned 32-bit integer.
  • "uint64" — unsigned 64-bit integer.

type의 기본값은 "int32"예요.

Example Code — 기존 변수 조회하기:

x = int8 (1);
intmax (x)
  ⇒  127

See also: intmin, flintmax.

intmin

Imin = intmin ()
Imin = intmin ("type")
Imin = intmin (var)

특정 정수 타입으로 표현할 수 있는 가장 작은 정수를 돌려줍니다. 입력은 문자열 "type" 또는 기존 정수 변수 var. 가능한 type 값은 intmax의 것과 같아요. 기본값은 "int32"입니다.

Example Code:

x = int8 (1);
intmin (x)
  ⇒  -128

See also: intmax, flintmax.

flintmax

Imax = flintmax ()
Imax = flintmax ("double")
Imax = flintmax ("single")
Imax = flintmax (var)

부동소수점 값에서 연속으로 표현할 수 있는 가장 큰 정수를 돌려줍니다. 입력은 부동소수점 타입을 지정하는 문자열 또는 기존 부동소수점 변수 var예요. 기본 타입은 "double"이고 "single"도 유효한 옵션이에요. IEEE 754 호환 시스템에서 flintmax"double"에 대해 2^{53}, "single"에 대해 2^{24}예요.

Example Code:

x = single (1);
flintmax (x)
  ⇒  16777216

See also: intmax, realmax, realmin.

다음 하위 섹션으로는 Hexadecimal and Binary Integer Constants(16진수·2진수 정수 상수)와 Integer Arithmetic(정수 산술)이 있어요.

더 알아보기

  • octave-hexadecimal-and-binary-integer-constants — 16진수·2진수 정수 상수
  • octave-numeric-data-types — 수치 데이터 타입 전반 (별도 문서)
  • octave-predicates-for-numeric-objects — 숫자 객체 판별 함수