計算機組織/概論

位元 儲存範圍

不同的 字組、架構、資料型態… 各有其位元數,
(ex: 8 位元、16 位元、32 位元、64 位元…)
深遠影響了計算機領域的發展。
 
本篇將超簡短地說明 位元 儲存範圍 的計算方式。
 


 

位元 儲存範圍

1 個位元,會有 2 = 21 種狀態:    『0』、『1』
on-off
 
所以,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) !
 
 

作者: 鄭中勝
喜愛音樂,但不知為何總在打程式 ? 期許能重新審視、整理自身所學,幫助有需要的人。

發表迴響