2010-05-26 96 views
-5

我需要創建函數返回第d位給定數字 任何人都可以幫助我嗎?顯示第012位數字

+3

位或數字?你的問題的標題是數字,你的問題有點說,那是什麼? – 2010-05-26 13:50:17

+0

你將需要更清楚你的問題。 – Laplace 2010-05-26 13:50:32

+0

我不會寫它,但10分區將成爲你的朋友。 – 2010-05-26 13:50:57

回答

4

要返回一個數的第n個數字,這樣做:

digit = (number/base^N) mod base 

  • /是整數除法在這裏。
  • base 對於小數爲10,對於八進制爲8,對於十六進制爲16等(儘管對於基數> 10,您將需要將獲得的數字轉換爲適當的數字,因爲對於十六進制將得到11-15但它實際上應該是數字AF)

其中「N」從右側計數,從零開始。如果你需要從左邊開始計算,那麼如果你只是轉換爲一個字符串而不是使用substring,那麼可能會更容易。

對於單位:

bit = (number >> N) and 1 

其中再次N從從右計數,並從零開始。儘管如此,你也可以使用第一個變種的位數,只是使用2的base,但是在按位操作的性能上可能比在分割和mod下的性能略好。

1

這會給你在多個特定位:

(number >> bit) & 1 

如果例如number是32(二進制00100000)和bit爲5,將得到的值爲1

在代碼>>shift right運營商和&是運營商binary and