不同的 字組、架構、資料型態… 各有其位元數,
(ex: 8 位元、16 位元、32 位元、64 位元…)
深遠影響了計算機領域的發展。
本篇將超簡短地說明 位元 儲存範圍 的計算方式。
位元 儲存範圍
1 個位元,會有 2 = 21 種狀態: 『0』、『1』
所以,2 個位元,會有 4 = 22 種狀態 (廢話 😑): 010 ~ 310
恩對…
8 位元,會有 256 = 28 種狀態: 010 ~ 25510
16 位元,會有 65536 = 216 種狀態: 010 ~ 6553510
32 位元,會有 4294967296 = 232 種狀態: 010 ~ 429496729510
…
因此 N 位元能表示:
0 至 2 N – 1 的 2 N 個正數。
例如 2 位元能表示 0、1、2、3 (十進制):
其最大值為 『 3 』,共有『 4 』個數 (2 2)。
然而,以上是討論 純二進制的狀況,
應用於不同領域 (ex: 有號數的表示),
其『數值範圍』所代表的意義不盡相同:
例:
許多語言中,int 時常以 32 位元儲存:
#include <stdio.h>
#include <limits.h>
int main(void) {
printf("The size of int: %lu bytes.\n", sizeof(int));
printf("The minimum value of INT = %d\n", INT_MIN);
printf("The maximum value of INT = %d\n", INT_MAX);
return 0;
}
/*
* Result:
* The size of int: 4 bytes.
* The minimum value of INT = -2147483648
* The maximum value of INT = 2147483647
*/
總共有 4294967296 = 232 種狀態沒錯,
表示的概念卻是:
-2147483648 (-2 31) ~ 2147483647 (2 31-1) !