1、是否需要有正负。
如果这个量不会有负值,那么我们可以使用无正负的类型。
分正负的类型,称为有符号类型;无正负的类型(只有正值),称为无符号类型。
2、使用二制数中的最高位表示正负。
(红色为最高位)
单字节数: 1111 1111
双字节数: 1111 1111 1111 1111
四字节数: 1111 1111 1111 1111 1111 1111 1111 1111
当一个数是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。
当一个数是有符号类型时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。
3、无符号类型和有符号类型的范围区别。
无符号类型中,所有的位都用于直接表示该值的大小。我们举一个字节的数值对比:
无符号类型: 1111 1111 值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20
有符号类型: 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20
同样是一个字节,无符号类型的最大值是255,而有符号类型的最大值是127。原因是有符号类型中的最高位被挪去表示符号了。
有符号类型的长处是它可以表示负数。虽然它的在最大值缩水了,却在负值的方向出现了伸展。我们仍用一个字节的数值对比:
无符号类型: 0 -----------------------------255
有符号类型: -128 --------- 0 ---------- 127
二者能表达的数值的个数都是256个。无符号类型表达的是 0~255 这256个数,有符号类型表达的是 -128 ~ 127这256个数。
以下为有符号和无符号1字节,2字节,4字节所能表示的整数范围
无符号(1字节) 0到255
有符号(1字节)-128到127
无符号(2字节) 0到65535
有符号(2字节) -32768到32765
无符号(4字节) 0到4294967295
有符号(4字节)-2147483648到2147483647