先说一个东西:字节
1个字节有 8个比特,也就是存储 8个 0或 1
对VC来说,int和long都是 4字节存储,也就是能存储32个 0或 1,short是 2字节,存储16个 0或 1。
以short为例,理论上能存储的最大数是 二进制的1111...1111(16个1)即2^16-1,最小的是0000....0000(16个0)即0
再谈符号位,上面的两个数都是正数,那要存储负数怎么办呢,所以符号这个东东出现了
把数据第一位作符号位,记0为正、1为负,这最大的数不是16个 1了,而是0+15个 1(即2^15-1),但此时可以表示负数了1+15个 1(即-2^15-1),对于1+15个0依规定是负数,理论上应该是-0但 16个0已经表示0了,所以把100..000特殊化,记一个最小负数(-2^16)
简单的说就是原先存储数的16位变成了15位,第一位变成了正负符号位
所以有无符号的区别,就是数第一位意义的区别。从实际意义上说,无符号全是正数,有符号既有正也有负