変数は、プログラム内で値を格納・変更可能なコンテナです。C#では型安全な言語であるため、すべての変数は宣言時にそのデータ型を明示する必要があります。
コードの整理:#region ディレクティブ
#region 説明
// コードの論理的ブロックを明確にし、可読性を向上させる。
#endregion
これはプリプロセッサディレクティブであり、コンパイル時のみ有効で、実行時には無視されます。
変数の宣言
基本的な構文:
データ型 変数名 = 初期値;
複数の変数を一度に宣言することも可能です:
int x = 10, y = 20, z = 30;
主要な組み込み型
| 符号付き整数型 | 符号なし整数型 |
|---|---|
| sbyte, short, int, long | byte, ushort, uint, ulong |
| 浮動小数点型 | 特殊型 |
| float, double, decimal | bool, char, string |
各型のメモリ使用量
Console.WriteLine($"sbyte : {sizeof(sbyte)} バイト");
Console.WriteLine($"short : {sizeof(short)} バイト");
Console.WriteLine($"int : {sizeof(int)} バイト");
Console.WriteLine($"long : {sizeof(long)} バイト");
Console.WriteLine($"float : {sizeof(float)} バイト");
Console.WriteLine($"double : {sizeof(double)} バイト");
Console.WriteLine($"decimal: {sizeof(decimal)} バイト");
型が占めるバイト数は、その表現可能な数値範囲を決定します。1バイト = 8ビットです。
2進数表現と補数
C#では直接2進リテラルを記述できませんが、Convert.ToString(value, 2)で2進表現を確認できます:
sbyte num = 127;
Console.WriteLine($"{num} の2進表現: {Convert.ToString(num, 2)}");
符号付き整数(例: sbyte)は -128 ~ 127 の範囲を持ちます。これは補数表現によるものです。
補数の仕組み
- 原数(絶対値)の2進表現 → 原碼
- ビット反転(符号ビットを除く) → 反碼
- 反碼 + 1 → 補碼
正数の場合、原碼・反碼・補碼は同一です。最上位ビットが符号ビット(0: 正、1: 負)となります。
例:-3 の補碼計算(8ビット)
- 原碼:
1000 0011 - 反碼:
1111 1100(符号ビット固定) - 補碼:
1111 1101
これにより、減算(例: 7 - 3)を加算(7 + (-3))として処理可能になります。
符号なし整数の特徴
符号なし型(例: byte)は 0 ~ 255 を表現でき、最上位ビットも値の一部として扱われます:
byte val = 128;
Console.WriteLine($"{val} の2進表現: {Convert.ToString(val, 2)}"); // 出力: 10000000
この場合、先頭の '1' は負号ではなく、単なる数値ビットです。