关于 负数补码的二进制表示有个疑问

chenzhp 2019-01-17 04:49:34

比如整数8 二进制表示就是1000

而 -8 二进制在我的电脑上输出的时候用补码表示 打印出来为 11111111 11111111 11111111 11111000

-8的补码 计算是

符号位 + 原码 然后按位取反 最后加1
应该是 11000 取反后 符号位不变 10111 加 1 最后变为 11000 这就是 -8的补码形式

为什么前面补了这么多1 ?
...全文
78 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43226448 2019-01-17
  • 打赏
  • 举报
回复
数制表示是以计算机中数制表示为准,若是32位,则-8的原码是10000000 00000000 00000000 00000111,除符号位外取反加一,得到11111111 11111111 11111111 11111000。
  • 打赏
  • 举报
回复
因为原先前面都是0,32位的数,前面都是0,反码后就都是1了。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧