asksg 2021-07-08 07:39 采纳率: 87.5%
浏览 9
已采纳

共用体,为什么结果是-2,-2,-1

img

  • 写回答

1条回答 默认 最新

  • include_iostream_ 2021-07-08 07:46
    关注

    四字节int下,-2的补码是0xFFFFFFFE(补码是反码加1。例如2,二进制是00000000 00000000 00000000 00000010,反码就是11111111 11111111 11111111 11111101,也即二进制形式所有位全部取反;加上1的结果是11111111 11111111 11111111 11111110,换算成十六进制就是 0xFFFFFFFE)。那么,由于intel机器是小端序,其存储结构从低地址写出来就是FE FF FF FF。a.a显然是-2本身,不必多说。a.c[0]作为8位有符号整数看待,就是0xFE作为整数,我们从补码找回原值(既然补码是反码加1,原值自然是补码减1再取反。注意:非负整数的原码、反码、补码是一致的),得到-2。a.c[1]是0xFF,作为8位整数看待,就是-1的补码咯。因此,结果是-2 -2 -1。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部