1、表达数值范围的不同
signed表示有符号的,其第一个位表示正负,其余位表示大小,例如signedint大小区间为-128~127。
unsigned表示无符号的,所有位都为大小,没有正负,例如unsignedint大小区间为0~127。
2、类型的不同
signed类型的整数,只用了去除最高位,剩下的15位来进行编码的,而最高位只是用来做标记(sign),标记整数的正负,0表示正,1表示负。所以对于signed的整数,的存储范围是(-2^15to2^15-1),也就是-32768到+32767的整数。
而对于unsigned的整数,其16位全部用来编码,存储范围便是(0to2^16-1),即0到65535的非负整数。所以呢你可以声明inta=1,或者inta=-1,但是不可以声明unsigneda=-1。但是需要提到的一点是,不管整数的类型是signed还是unsigned,都用了16位来存储,也就是说16位全部用来存储数据。
3、表达的数值不同
signed类型的整数只用了除去最高位剩余的15为进行编码,最高位用来标记整数的正负,0表示正,1表示负。所以对signed的整数存储范围为(-2^15~2^15-1)。
unsigned类型的整数其16为全部用来编码,则unsigned的整数存储范围为(0~2^16-1)。