不是说所有整数在内存中均以补码加法形式存储吗?为什么0xffff在内存中是1...1?而-0xffff又是什么形式呢?

内存里面都是使用补码加法形式保存的

其中正数的补码加法和原码相同

负数补码加法等于源码-〉反码 + 1;

另外如果使用%u 输出,这样作为无符号数字因为最高为也用来表礻数字本身,所以按照会你理解的数字大小表示


版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

1.负数在内存中的存储形式

  • (1)十进制负数以补码加法存储于内存上

      
  • (2)十六进制负數以原码存储在内存上

      
    1后面的31位表示序号位,0...0【类似于数组中的0号位】表示负数中的最小的一位。由于int的最小值为-2^31,排在负数从小到大的苐0位所以int i = 0x 为 -(2^31)+ 0 = -2^31

gdb调试查看变量2进制、十进制和十六进制表示

我要回帖

更多关于 正数的补码 的文章

 

随机推荐