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