举例:-1的4位二进制:1的二进制是0001反码是1110补码是1111但15用二进制表示也是1111那问题来了,计算机这么知道这是-1还是15?
3 回答
onemoo
TA贡献883条经验 获得超454个赞
其实如果只看 1111 这4位二进制数,计算机也不知道它们是什么。
所以编程语言会有类型系统,这些二进制位在被解释为相应的类型后才有意义。
以 1111 为例:
当它的类型是有符号整型,那么它就表示 -1。有符号整型的最高位被视为符号位,这里符号位为 1 表示它是负数,按照补码解释为 -1。 有符号数最大只能表示为二进制 0111,也就是十进制的 7。
当它的类型是无符号整型,那么它就是 15。
所以具体会被解释成什么由它的类型而定。
顺便说下,这也正是为什么整型间转型时会发生溢出。 如果你把这个 15 转型为有符号整型,那 1111 就被当作是 -1 了。
所以转型时要注意不同类型能表示的数值范围。
添加回答
举报
0/150
提交
取消