P&H&Y 2021-08-06 23:22 采纳率: 66.7%
浏览 93
已结题

int a=-10; printf("%8x",a);

int a=10;结果是︺︺︺︺︺︺︺a
那为什么是-10时,结果是fffffff6
是-2时,结果是fffffffe
???

  • 写回答

5条回答 默认 最新

  • 汇编菌 2021-08-06 23:39
    关注

    因为在计算机里面任何数都是以补码形式存在的
    负数的补码= 符号位+(原码按位取反+1)
    正数的符号位是0
    负数的符号位是1
    所以会有负数的原码
    -10 = 1000_0000_0000_0000_0000_0000_0000_1010
    然后符号位保持不变,其它的按位取反
    =1111_1111_1111_1111_1111_1111_1111_0101
    然后再+1
    =1111_1111_1111_1111_1111_1111_1111_0110
    然后转化为16进制
    =0xfffffff6

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

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集