Data.Word

Data.Word

이 모듈은 너비가 고정되지 않은(unsigned) 정수 타입(Word)과 고정된 너비의 정수 타입(Word8, Word16, Word32, Word64)을 제공해요. 모든 산술 연산은 2^n을 법(法, modulus)으로 하여 수행되는데, 여기서 n은 타입의 비트 수예요.

출처: Haskell 2010 언어 리포트

본문

module Data.Word (

    Word,  Word8,  Word16,  Word32,  Word64

  ) where

23.1 부호 없는 정수 타입 (Unsigned integral types)

이 모듈은 너비가 고정되지 않은 부호 없는(unsigned) 정수 타입(Word)과 고정된 너비의 부호 없는 정수 타입(Word8, Word16, Word32, Word64)을 제공해요. 모든 산술 연산은 2^n을 법으로 하여 수행되는데, 여기서 n은 타입의 비트 수예요.

어떤 두 정수 타입 사이를 변환할 때는 fromIntegral을 사용해요. 워드(word) 타입을 정수 타입으로, 또는 그 반대로 변환할 때는 부호가 아니라 표현(representation)이 보존돼요.

Int처럼 유계(bounded) 타입 위의 Enum 인스턴스에 대해 성립하는 규칙들(해당 부분은 산술 수열(arithmetic sequences)을 다루는 Haskell 언어 리포트의 절을 참고)은 여기에 정의된 다양한 Word 타입 위의 Enum 인스턴스에도 그대로 성립해요.

타입의 너비보다 크거나 같은 양만큼 오른쪽·왼쪽으로 시프트하면 결과가 0이 돼요. 이것은 C에서의 동작(정의되어 있지 않음, undefined)과는 반대인데, C의 일반적인 해석 중 하나는 시프트 횟수를 타입의 너비로 잘라내는 것으로, 예를 들어 C 구현 중에는 1 << 32 == 1이 성립하기도 해요.

data Word

Word는 부호 없는 정수 타입으로, Int와 크기가 같아요.

instance Bounded Word instance Enum Word
instance Eq Word
instance Integral Word
instance Num Word instance Ord Word
instance Read Word
instance Real Word
instance Show Word
instance Ix Word
instance Storable Word
instance Bits Word
data Word8

8비트 부호 없는 정수 타입이에요.

instance Bounded Word8 instance Enum Word8
instance Eq Word8
instance Integral Word8
instance Num Word8 instance Ord Word8
instance Read Word8
instance Real Word8
instance Show Word8
instance Ix Word8
instance Storable Word8
instance Bits Word8
data Word16

16비트 부호 없는 정수 타입이에요.

instance Bounded Word16 instance Enum Word16
instance Eq Word16
instance Integral Word16
instance Num Word16 instance Ord Word16
instance Read Word16
instance Real Word16
instance Show Word16
instance Ix Word16
instance Storable Word16
instance Bits Word16
data Word32

32비트 부호 없는 정수 타입이에요.

instance Bounded Word32 instance Enum Word32
instance Eq Word32
instance Integral Word32
instance Num Word32 instance Ord Word32
instance Read Word32
instance Real Word32
instance Show Word32
instance Ix Word32
instance Storable Word32
instance Bits Word32
data Word64

64비트 부호 없는 정수 타입이에요.

instance Bounded Word64 instance Enum Word64
instance Eq Word64
instance Integral Word64
instance Num Word64 instance Ord Word64
instance Read Word64
instance Real Word64
instance Show Word64
instance Ix Word64
instance Storable Word64
instance Bits Word64

더 알아보기 (Learn more)

  • 다음 챕터인 24장 Foreign은 언어 독립적인 마샬링(marshalling) 모듈들을 한데 묶어요.
  • Word 타입의 표현·시프트 동작이 Int·Bits 클래스와 어떻게 맞물리는지는 리포트 본문을 참고해요.