求教C语言问题 请问为何d输入65525 输出为何是-11? 求详细解答

如题所述

在16位int平台下,int的范围是-32768~+32767,65525已经远超出int正确表达的数域了,产生了溢出问题。65525的作为正数的二进制是1111111111110101,这个二进制数恰好是十进制数-11的二进制补码。追问

您好 谢谢 这个二进制数恰好是十进制数-11的二进制补码。 这句话不太理解。

追答

-11二进制原码是10000000 00001011,按求负数二进制的补码规则,符号位不变数据位取反:11111111 11110100,再+1为11111111 11110101——这就是16位int平台下的-11,若按正数看待,那就是65525了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-14
丁得孙80地镇星小遮拦穆春81地羁星操刀鬼曹正82地魔星

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网