整數 (電腦科學)
在電腦科學中,整數的概念指數學上整數的一個有限子集。它也稱為整數資料類型,或簡稱整型數、整型[1]。 通常是程式設計語言的一種基礎資料型態,例如java及C 程式語言的int 資料類型,然而這種基礎資料型態只能表示有限的整數,其範圍受制於電腦的一個字組所包含的位元數所能表示的組合總數。當運算結果超出範圍時,即出現演算溢位,微處理器的狀態暫存器中的溢位旗標(overflow flag)會被設定,而系統則會產生溢位例外(overflow exception)或溢位錯誤(overflow error)。
電腦可處理帶號(signed)及非帶號(unsigned)整數,非帶號整數不包括負數。由於一般情況下要同時處理正數及負數,帶號整數把字組的最高有效位元(msb,即最左邊的位元)視為正負號(0代表正,1代表負),而數字則以二補數形式編碼,以簡化二進制運算的邏輯電路。
即使電腦字組的位元數有限,仍可透過編譯器及直譯器以軟體方式結合不同數目的字組以產生新的資料類型來加以擴展,於是在早期的8位元電腦上可處理16及32位元的整數,而在近代的32位元電腦上則可輕鬆地處理64位元的整數了。可變長度的整數(例如bignum)可以儲存任意大的整數,條件是有足夠記憶體存放。其它類型的整數長度都是固定的,例如某個數目的位元,通常取2的某次方(例如4、8、16等),或者某個固定位數(例如9個位、10個位)。
相反地,理論上的電腦(例如圖靈機)一般可以有無限的容量(但只是可數集)。
字組位元數與整數範圍之關係
字組位元數與整數範圍之關係 | |||||
---|---|---|---|---|---|
字組位元數 | 非帶號整數 | 帶號整數 | 應用 | ||
下限 | 上限 | 下限 | 上限 | ||
8 | 0 | 255 | -128 | 127 | 8080 Z80 6502 |
16 | 0 | 65535 | -32768 | 32767 | 8086 80286 |
32 | 0 | 4,294,967,295 (232-1) |
−2,147,483,648 (-231) |
2,147,483,647 (231-1) |
80386 80486Pentium系 680X0 |
64 | 0 | 18,446,744,073,709,551,615 (264-1) |
−9,223,372,036,854,775,808 (-263) |
9,223,372,036,854,775,807 (263-1) |
Itanium |
128 | 0 | 340,282,366,920,938,463,463,374,607,431,768,211,455 (2128-1) |
−170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) |
170,141,183,460,469,231,731,687,303,715,884,105,727 (2127-1) |
IPv6 |
n | 0 | 2n-1 | -2n-1 | 2n-1-1 | 加密演算法、RSA、質數枚舉等大數運算 |
參考文獻
- ^ Kernighan & Ritchie. The C Programming Language - Second Edition, 43rd printing. Prentice Hall. 1988: section 2.9. ISBN 978-0131103627.
C provides six operators for bit manipulation; these may only be applied to integral operands, that is, char, short, int and long, whether signed or unsigned.