#define INADDR_NONE             0xffffffff
有人告诉我这个0xffffffff是16进制的-1(如果是有符号型)。0x表示十六进制
请问这个0xffffffff要怎样换算出来是16进制的-1呢。谢谢!!

解决方案 »

  1.   

    int tmp = 0xffffffff 看看
      

  2.   

    这是计算机的补码形式。将补码转化为普通数字:
    如果最高有效位为1者为负,如果为0则为正正:
     与普通使用的数字一致
    负:
     1、求负数的绝对值
     2、按位求反
     2、末位减1例:求0xFEFE的值
     二进制表示位为
                            1111 1110 1111 1110
     1、末位减1          1111 1110 1111 1110
      2、按位求反         0000 0001 0000 0001
     3、将结果前面加上负号 结果为-0x101
      

  3.   

    这个本来就是计算机的有符形存储模式, 有 0(0x0000) 与 -0(0xffff)的分别
      

  4.   

    0xffffffff 补码
    符号为-
    补码=原码取反+1