2013-10-24 22 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 。