全村的希望· 2023-07-16 09:03 采纳率: 89.5%
浏览 25
已结题

刚接触c,看书的时候遇到了疑惑

img


我不明白(2)的例如:变量a被说明为unsigned类型,在进行a=-1的赋值操作后将使a中的值为65535
为啥就使a变为65535了

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-07-16 11:17
    关注
    • 首先 一般 整型是 4个字节的, 32位二进制,显然最大值 不止 65535,你这里应该当作 16位算,整型的最大值就为 65535
    • 下面来分析下 有符号整型-1 ,负数存储在内存的中数据是补码,第一位为符号位,剩下15位 为数据位,
      这里 -1 的 补码就是 1000 0000 0000 0001;
      它的 反码 就是 补码减1,即 1000 0000 0000 0000;
      它的源码就是 反码 取反,即 1111 1111 1111 1111
    • 然后这个数赋值给了 无符号整型【还是按16位算】,也就是 -1的源码对应的数,直接转换成无符号整型, 这个数就是 65535

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 创建了问题 7月16日

悬赏问题

  • ¥15 网络分析设施点无法识别
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决
  • ¥100 基于SVM的信息粒化时序回归预测,有偿求解!
  • ¥15 物体组批优化问题-数学建模求解答
  • ¥15 微信原生小程序tabBar编译报错
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用
  • ¥15 egg异步请求返回404的问题