2014-01-17 43 views
0

7位中給定的數字只要是以下數字中的一個,就存儲數字的內容:1,2,3,4,5,6,7,8,9,107位中的C++存儲編號

首先,這可能嗎?

在第1位在這種情況下,尋找代碼,但對設計的建議,例如商店1在這種情況下,0等

編輯:這是在壓縮算法中使用。如果以上情況不可能,請嘗試按照我們手上的數字來計算prev數字,並且prev編號爲1,2,3,... 10

+0

你可以使用'enum'嗎? –

+0

是的,我可以使用。 – Luka

+0

我會在[枚舉]中存儲[枚舉值](http://stackoverflow.com/questions/4564322/some-good-example-for-using-enums)。 –

回答

3

您只需要4位來存儲編號1至10:

0001 = 1 
0010 = 2 
0011 = 3 
0100 = 4 
0101 = 5 
0110 = 6 
0111 = 7 
1000 = 8 
1001 = 9 
1010 = 10 

有該編碼在https://en.wikipedia.org/wiki/Binary_number背景材料。

+1

+1希望你已經提到3位的範圍是8,而4位是16. –

+1

一個附錄,你可能想看看'bitfields',一種不可移植但常用的方法來執行位打包的值。 [一個很好的討論在這裏](http://stackoverflow.com/questions/1044654/bitfield-manipulation-in-c) –

+1

@ElliottFrisch那麼,你不得不提及0..7和1之間的區別.. 8,以及「爲什麼你不能只是減去端點」,現在我們正在談論fencepost錯誤,對於第一次看到這個概念的人來說可能有點多。也許正是因爲3位顯然太少,而4位已經夠清楚了,所以人們不必擔心確切的界限。 (但是我不知道爲什麼這個問題問了大約7位!) –

2
0 : 0000000 
1 : 0000001 
2 : 0000010 
3 : 0000011 
4 : 0000100 
5 : 0000101 
6 : 0000110 
7 : 0000111 
8 : 0001000 
9 : 0001001 
10: 0001010 

除非我誤解了你的問題,那應該有效。