16진수·2진수 정수 상수
16진수·2진수 정수 상수 (Hexadecimal and Binary Integer Constants)
16진수 또는 2진수 표기로 숫자를 정의하면, 지정된 값을 담기에 충분할 만큼 큰 표현형의 부호 없는 정수가 자동으로 만들어져요. Octave 매뉴얼 4.4.1절을 정리해 볼게요.
본문
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 — 숫자 객체 판별 함수