このノートでは、C++ の数値型と memory management について解説します。
Variable Types
対象となる variable types は上記の通りです。この記事では、byte は 8-bit の memory 単位、つまり 1 byte = 8 bits を指します。
Simple Variables
分類
- Integer types: char (1 byte), short (2 bytes), int (4 bytes), long (4 bytes), long long (8 bytes)。
- 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 で表現する。
-
符号: 負なので、最初の bit は 1 です。
-
絶対値: 15.5 = 15(int) + 0.5(decimal)
-
Binary 変換: 15 = (1111)_2, 0.5 = 1/2 = 2^(-1) = (0.1)_2
-
Offset: 15.5 = (1111.1)_2 = 1.1111 * 2^3, offset = 3+127 = 130 = (10000010)_2
