T.TAO
Back to Blog
/2 min read/Data Structure

C++#1 Data and Memory

#ComputerScience#ProgrammingLanguage
C++#1 Data and Memory

このノートでは、C++ の数値型と memory management について解説します。

Variable Types

対象となる variable types は上記の通りです。この記事では、byte は 8-bit の memory 単位、つまり 1 byte = 8 bits を指します。

Simple Variables

分類

  1. Integer types: char (1 byte), short (2 bytes), int (4 bytes), long (4 bytes), long long (8 bytes)。
  2. Floating-point types: float (4 bytes), double (8 bytes), long double (12 または 16 bytes)。

boolean 型 (bool) は true と false のみを持ちます。C++ では 0 を false、それ以外の値を true として解釈します。

C++11 では固定幅の integer types である int16_t, int32_t, int64_t が提供されています。サイズはそれぞれ 16 bits, 32 bits, 64 bits (つまり 2/4/8 bytes) です。

表現

Integer の表現:

  • integer が signed の場合、bit 0 は常に符号 (1 = 負, 0 = 正) を示し、残りの bits が大きさを表します。
  • integer が unsigned の場合、すべての bits が大きさを表します。

float (32 bits) の表現:

  • Bit 0 / Sign bit (1 bit): 符号を示します。1 = 負, 0 = 正。
  • Bits 1–8 / Exponent (8 bits): 範囲を示します。
  • 残りの bits / Mantissa (23 bits): 精度を示します。

例: -15.5 を binary bits で表現する。

  1. 符号: 負なので、最初の bit は 1 です。

  2. 絶対値: 15.5 = 15(int) + 0.5(decimal)

  3. Binary 変換: 15 = (1111)_2, 0.5 = 1/2 = 2^(-1) = (0.1)_2

  4. Offset: 15.5 = (1111.1)_2 = 1.1111 * 2^3, offset = 3+127 = 130 = (10000010)_2