计算机原理及基础 —— 有符号类型和无符号类型

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: