【c语言】解释为什么32767+1=-32768

【c语言】解释为什么32767+1=-32768对于 c 语言来说 其存储数据的格式是按照其补码的形式存放的 只不过正数的补码等于其数字本身 因此 在刚开始 就要以补码的角度来思考问题 且计算机内部默认为是有符号类型的数字

大家好,欢迎来到IT知识分享网。

对于c语言来说,其存储数据的格式是按照其补码的形式存放的,只不过正数的补码等于其数字本身,因此,在刚开始,就要以补码的角度来思考问题,且计算机内部默认为是有符号类型的数字。

对于16位的二进制来说,其默认的有符号数据范围是:—32768~~32767。

对于32767加1,可得32768,超出了有符号整型变量的数值范围,

32767在计算机中的存储形式:0111    1111    1111   1111

令其加1:可得——》               1000     0000   0000   0000

可以这样想:32767和加1后得到的数据都是以补码形式存放在内存中的,只不过32767这个正数的补码与其原码是一样的,那么加1后得到的1000 0000 0000 0000这个补码与原码一样吗?

因为是有符号数,所以最高位表示符号位,而加1后的最高位为1,因此,首先确定这个数是个负数,再确定其数值大小,按照原码求补码的反顺序来求,因此,先对这个数减1,得——》》0111 1111 1111 1111,再取反,——》》1000 0000 0000 0000,这个原码表示的大小是32768,又因为是负数,所以为-32768

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125247.html

(0)
上一篇 2025-09-28 22:20
下一篇 2025-09-28 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信