为什么-9 base 10等于17中的a7ffda89?

时间:2016-04-03 01:28:53

标签: c complement

使用Microsoft的itoa实现,您如何获得" a7ffda89"作为基数为10的基数17表示?我正在寻找的是对算法的描述。

以下是我用以查找itoa将使用Microsoft的实现返回的代码:

#include "stdafx.h"  
#include <stdlib.h>

int main(int argc, char *argv[])
{
  (void)argc;
  (void)argv;
  char buff[256] = {};
  memset(buff, '0', 256);
  _itoa_s(-9, buff, 256, 17);
  exit(0);
}

2 个答案:

答案 0 :(得分:3)

来自cplusplus.com

  

如果base为10且值为负,则结果字符串前面带有减号( - )。对于任何其他基础,值始终被视为无符号。

答案 1 :(得分:2)

表示为无符号32位整数

-9为4294967287.将 转换为基数17得到a7ffda89。作为检查,在Python中:

>>> int('a7ffda89', 17) - (1<<32)
-9
相关问题