整数包含正整数,负整数和0。从数学的角度来讲,整数是无穷无尽、列举不完的,整数的大小是没有限制的。但是,如果用计算机来表示整数,则不然。因为计算机是靠数字信号来表示数,计算机所能处理的整数的长度也是由计算机的字长来决定的。这样一来,必须制定一个规则来表示整数。
下来我们以C语言中的整数表示,展开学习。在c语言中有 char,unsigned char,short int,unsigned short int,long,unsigned long。这些类型不仅有“有符号”和“无符号”之分,而且有长度之分。
1.1.1 无符号整数(unsigned int)的表示
上面说了,整数在计算机中,都是以二进制比特位表示的。例如,对于一个w位的无符号整数,用二进制比特位可以表示为[xw-1 , xw-2 , … , x2 , x1 , x0],如果我们用B2Uw(x)来表示这个整数,其中B表示是binary,U表示是unsigned,w表示二进制比特的位数。那么可以得到,
例如:对于16位无符号整数,能表示的范围是 0 ~ 65535。
1.1.2 有符号数的表示
目前的计算机系统大都采用补码(two’s complement)来表示有符号数的。例如,对于一个w位的整数,用二进制比特位可以表示为[xw-1 , xw-2 , … , x2 , x1 , x0],那么比特位 xw-1就是符号位,如果值是0表示正整数,如果值是1则表示负整数。B2Tw(x)来表示整数,则有