C#における変数と数値表現

変数は、プログラム内で値を格納・変更可能なコンテナです。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' は負号ではなく、単なる数値ビットです。

タグ: C# 変数 データ型 補数 符号付き整数

7月1日 17:09 投稿