整数 (计算机科学)
外观
在计算机科学中,整数的概念指数学上整数的一个有限子集。它也称为整数数据类型,或简称整型数、整型[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.