| 型別 | 關鍵字 | 位元 | 有號/無號 | 最小值 | 最大值 |
|---|---|---|---|---|---|
| sbyte | sbyte | 8 | 有號 | -128 | 127 |
| byte | byte | 8 | 無號 | 0 | 255 |
| short | short | 16 | 有號 | -32,768 | 32,767 |
| ushort | ushort | 16 | 無號 | 0 | 65,535 |
| int | int | 32 | 有號 | -2,147,483,648 | 2,147,483,647 |
| uint | uint | 32 | 無號 | 0 | 4,294,967,295 |
| long | long | 64 | 有號 | -9.22e18 | 9.22e18 |
| ulong | ulong | 64 | 無號 | 0 | 1.84e19 |
| nint | nint | 平台相關 | 有號 | - | - |
| nuint | nuint | 平台相關 | 無號 | - | - |
// 32-bit 二進制補數
// 正數:最高位 0,其餘為數值
// 負數:對應正數按位取反 + 1
// 例:-1 = 0xFFFFFFFF (全 1)
// -2,147,483,648 = 0x80000000 (最小值,無正數對應)
// 位元操作常用模式
int flags = 0;
flags |= 1 << 0; // 設定 bit 0
flags &= ~(1 << 0); // 清除 bit 0
flags ^= 1 << 0; // 切換 bit 0
bool isSet = (flags & (1 << 0)) != 0; // 檢查 bit 0
// 預設 unchecked:靜態編譯期常數溢位報錯,執行期回繞
int a = int.MaxValue;
int b = a + 1; // -2147483648 (回繞)
// 區塊檢查
checked {
int c = a + 1; // OverflowException
}
// 運算式檢查
int d = checked(a + 1);
// 編譯器選項 /checked+ 全專案啟用 (效能微降)
uint/ulong,改用 long + 範圍檢查nint/nuint (C# 9+) 對應平台指標大小,適合跨平台指標運算// 2 的冪次檢查
bool IsPowerOfTwo(int x) => x > 0 && (x & (x - 1)) == 0;
// 取下一個 2 的冪次
int NextPowerOfTwo(int x) {
x--; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16;
return x + 1;
}
// 計算 1 的個數 (Population Count)
int PopCount(int x) => BitOperations.PopCount((uint)x); // .NET Core 3.0+ 硬體指令
// 交換兩數 (XOR)
void Swap(ref int a, ref int b) { a ^= b; b ^= a; a ^= b; }


