onemoo
其实如果只看 1111 这4位二进制数,计算机也不知道它们是什么。所以编程语言会有类型系统,这些二进制位在被解释为相应的类型后才有意义。以 1111 为例:当它的类型是有符号整型,那么它就表示 -1。有符号整型的最高位被视为符号位,这里符号位为 1 表示它是负数,按照补码解释为 -1。 有符号数最大只能表示为二进制 0111,也就是十进制的 7。当它的类型是无符号整型,那么它就是 15。所以具体会被解释成什么由它的类型而定。顺便说下,这也正是为什么整型间转型时会发生溢出。 如果你把这个 15 转型为有符号整型,那 1111 就被当作是 -1 了。所以转型时要注意不同类型能表示的数值范围。