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

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

img

  • 写回答

1条回答 默认 最新

  • include_iostream_ 2021-07-08 15: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。

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

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?