2013-10-24 14 views
1
  • 编译器:GCC 4.7.2(Debian的4.7.2-5)
  • 平台:Linux 3.2.0的x86(Debian的7.1)

我写一个字符串到整数转换函数,我读here十六进制有它自己的形式的指数表示法。我有一些关于这个问题的问题。指数符号为八路

  1. 该文章说,'p'后面的值是十进制而不是十六进制是正确的吗?

  2. 这篇文章还说,在'p'之后有一个2的基数不是16是真的吗?

  3. 0x1.11p4一个整数还是它有一个小数部分?

这导致了主要问题:八进制是否有自己的指数表示形式?如果有,形式是什么?

如果八进制确实是而不是有它自己的指数表示法,那么将十六进制符号调整为八进制字符串是否合理?

+0

为了确保我理解你的问题:你认为你需要你的转换程序能够处理一个包含八进制数的字符串,并将它们转换为正确的整数。是对的吗? – Floris

+0

你有什么理由不得不重新发明'strtol'而不是仅仅使用'strtol'本身? – jwodder

+0

jwodder没有任何理由和@Floris是的我想将一个包含八进制数字的字符串转换为整数,如果八进制数字系统具有某种形式的指数表示法,我也想处理它。 –

回答

2

我看到你对维基百科有一种健康的不信任! =)

  1. 是的,指数是十进制的。

  2. 是,该碱是2,而不是16。

  3. 0x1.11p4相当于11.1 和是浮动,而不是一个整数。

我不知道八进制形式。如果你想定义你自己,我没有看到这个问题。大概你会使用0前缀而不是0x,并保留其他所有内容。显然你不能用这种表示编写代码,因为编译器不支持它。

+0

'0x1.11p4'在16位基本上不是11.1,它实际上是16位的1.11,乘以16(2的4次幂)。 –

3
  • 跟随p的值是十进制的,但它代表用碱的指数2.
  • 0x1.11p4具有.11小数成分,这也是在基座16
  • 没有八进制浮点点常量,所以你不能对它们使用指数表示法。
  • 用你的例子说明,0x1.11p4是1.11 ×2 。