16진수·2진수 정수 상수

16진수·2진수 정수 상수 (Hexadecimal and Binary Integer Constants)

16진수 또는 2진수 표기로 숫자를 정의하면, 지정된 값을 담기에 충분할 만큼 큰 표현형의 부호 없는 정수가 자동으로 만들어져요. Octave 매뉴얼 4.4.1절을 정리해 볼게요.

출처: Hexadecimal and Binary Integer Constants

본문

16진수 또는 2진수 표기로 숫자를 정의하면, 지정된 값을 담기에 충분할 만큼 큰 표현형의 부호 없는 정수가 자동으로 만들어져요. 예를 들어:

0b101        # uint8
0x100        # uint16
0xDEADBEEF   # uint32
0x1DEADBEEF  # uint64

저장 클래스(storage class)는 접미사를 붙여 지정할 수 있어요. 부호 있는 정수에는 s, 부호 없는 정수에는 u를 크기(8, 16, 32, 64)와 함께 사용해요. 밑줄 구분자 _를 쓰면 가독성을 높일 수 있어요. 예를 들어:

0b101s16        # int16
0b101_s16       # int16, 값과 표현이 분리됨
0xDEADBEEFs32   # int32
0xDEADBEEF_u64  # uint64

정수 상수의 행렬을 정의할 때는 전체 행렬이 첫 번째 원소의 저장 클래스를 갖는다는 점에 주의하세요. 행렬 [0x1; 0x100; 0x10000]uint8 타입이 되고, 더 큰 값들은 정수 값의 포화(saturation) 의미론 때문에 잘려요. 이 문제를 피하려면 1) 첫 번째 정수를 원하는 크기로 선언하거나(예: [0x1u32; 0x100; 0x10000]), 2) 배열 표현의 상수들을 앞에 0을 채워 각 값이 같은 자릿수를 쓰도록 만드세요(예: [0x00_00_01; 0x00_01_00; 0x01_00_00]).

더 알아보기

  • octave-integer-data-types — 정수 데이터 타입
  • octave-numeric-data-types — 수치 데이터 타입 전반 (별도 문서)
  • octave-predicates-for-numeric-objects — 숫자 객체 판별 함수