为什么无符号数一共表示了256个数据,而有符号数只表示了255个数据
发布网友
发布时间:2024-03-07 18:56
我来回答
共1个回答
热心网友
时间:2024-07-27 10:02
最明显的区别就是二者表示的范围不同:
无符号数中,所有的位都用于直接表示该值的大小。有符号数中最高位用于表示正负,所以,当为正值时,该数的最大值就会变小。我们举一个字节的数值对比:无符号数:11111111值:2551*27+1*26+1*25+1*24+1*23+1*22+1*21+1*20有符号数:01111111值:1271*26+1*25+1*24+1*23+1*22+1*21+1*20同样是一个字节,无符号数的最大值是255,而有符号数的最大值是127。原因是有符号数中的最高位被挪去表示符号了。并且,我们知道,最高位的权值也是最高的(对于1字节数来说是2的7次方=128),所以仅仅少于一位,最大值一下子减半。不过,有符号数的长处是它可以表示负数。因此,虽然它的在最大值缩水了,却在负值的方向出现了伸展。我们仍一个字节的数值对比:无符号数:0-----------------255有符号数:-128---------0----------127同样是一个字节,无符号的最小值是0,而有符号数的最小值是-128。所以二者能表达的不同的数值的个数都一样是256个。只不过前者表达的是0到255这256个数,后者表达的是-128到+127这256个数。