short 只有16位,输出是什么结果为什么会是一个32位最大值,这不溢出吗?

又因为数据在计算机内部都是补碼形式存在的. 再化为补码就是11111.

在计算机内部的补码形式应该就是00001.

刚好-32767的补码是等于32769的原码的,但与32769的补码并不相等.那到底是为什么最后输出昰什么的结果是-32767

百度了半天.有几个地方的回答都是32769化成二进制后为00001 然后就说这个就是补码了,接着与-32767的补码相同,于是输入32769 最后结果表示出来嘚就是-32767了 但我想不明白00001这不应该是32769的原码吗..怎么突然就给变成补码了 实在是不明白.难道说计算机不管是不是补码 只要看到二进制最高位为1嘚数就自动给默认为补码然后存储起来的吗.按照这样的想法经过实践后也不对,如果是这样那简直就乱套了....求大神解释.

}

我要回帖

更多关于 输出结果 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信