m0_46240255
2020-06-15 15:40
采纳率: 50%
浏览 108

关于补码的问题,求解答

#include
int main()
{
char c =256;
printf("c=%d",c);
return 0;
}
输出结果是-1;
可以这么理解是:
255 存入计算机是补码1111 1111;
输出时,最高位是符号位,1表示负数,其余7位按补码求真值法则是取反+1,即000 0001;和符号位全合起来就是1000 0001,是-1。

那输入128时,按这种方法计算应该是1000 0000,1表示负数,其余7位按补码求真值法则是取反+1,即111 1111+1=1000 0000;这还是128;

为什么程序会输出-128呢

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

相关推荐 更多相似问题