2011-11-29 50 views
1

我有2組值。每個是在-50至+ 50代表8位中的2個數字

範圍是否有任何方式來表示兩個這些數值在一個單一的字節? (我在C工作,使用Vstudio 2010)。 謝謝。

說明:值是任意整數;也就是說,這些值可以是-50到+50之間的任何整數。 (所以,問題已經回答了:它是「沒有」。)

+1

是的,是的,有 –

+1

不。有101 * 101 = 10201個不同的可能值。一個字節只能容納256個不同的值。 –

+0

@KerrekSB非常有趣:) :) :) – dasblinkenlight

回答

9

不,不是8位。 -50到+50是101種可能性。其中兩個,這是10201種可能性。 8位只有256個組合。

你將需要至少14位兩個值-50存儲到+50。

+0

OP沒有明確說明也沒有暗示這些值是從-50到+50範圍內的任意整數。 –

+0

OP沒有另行說明。是的,你可以在兩行之間閱讀,但我們大多數人都是基於這樣一個假設來回答的:他們是-50至50之間的任意整數。 – Mysticial

0

-50至50表示的範圍100。您需要在列表中的7位表示的範圍內的100(7位,128個值,6位,64個值)。所以8位,不能保持完整的精度和2個數字。如果你放鬆精確度,那麼,可以做。

0

簡短答案是否定的。

長時間的答案是,在大多數體系結構中,一個字節是8位。一半是4位。 4位只能表示-8到7,使用二進制補碼,它是代表在大多數架構整數的主要手段..

1

這取決於。這取決於幾件事情:

  • 什麼樣的價值觀在-50範圍內的這些值+50是
  • 多少位有一個字節

如果這些值從 - 50到+50是任意浮點數或整數,您可能無法將其中的2個放入單個字節中。不管是否這種情況取決於一個字節中的位數。在Visual C++字節是8位。對於從-50到+50的任意整數,8位太少,因爲其他人已經解釋過。在某些平臺上,字節可以大到16位。在這種情況下,顯然,你可以將幾個從-50到+50的整數打包成16位。 AFAIK,在C/C++中不能有小於16位或更小的浮點數。

現在,如果從-50到50的那些值不是任意的浮點或整數值,如果這些值只能是要麼-50或50,1個比特就足夠了一個這樣的值。如果它們只能是-50,0或+50,那麼對於一個這樣的值,2位就足夠了。如果它們只能是-50,-25,0,+25或+50,那麼對於一個這樣的值,3位就足夠了。

問題是,答案在很大程度上取決於如何制定問題。您的問題沒有明確定義範圍從-50到+50的值爲任意整數或任意浮點數,也不意味着這種值。除非您的問題得到澄清,否則沒有單一的明確答案,如yesno,您可以獲得的最佳答案爲maybe