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