关于sighed和unsigned。

这个为啥明明只表示正数范围缩小了,但反而存储空间还要扩大一倍呢?

img

形象地理解就是各种各样的类型相当于各种各样的容器~桶,确定了某个桶,那么它的容量肯定是不变的,一个桶装一半水(负数)装一半油(无符号数),那么油肯定只有半桶了,当整个桶用来装油时,那肯定能装一桶了,相当于装油量增加了一倍。

只是正数的值范围扩大了一倍,但不能表示负数

signed有符号,其二进制前面会多一位符号位;signed无符号,一定是正数,其二进制前面的符号位可以当数(仅供理解,不严谨)。例:signed:(第一位符号位,### 0是正数,1是负数)011是正3,共3位;而unsigned的3位可以表示成111,即7,大了很多

(意不对勿喷,仅供理解,含本人猜测)

懂了吗?求个采纳~