2013-08-05 29 views

回答

2

如果你想有一個位圖,或許可以考慮使用std::bitset

從鏈接引用:

類模板位集表示N比特的固定大小的序列。比特集可以由標準邏輯運算符操作並轉換爲字符串和整數。

其優點是很容易將位數擴展到任意數量。構造函數可以使用整型來初始化位集。

考慮從這個documentation article的例子:

輸入

#include <iostream> 
#include <bitset> 

int main() 
{ 
    std::bitset<8> b1(42); 
    for (std::size_t i = 0; i < b1.size(); ++i) { 
     std::cout << "b1[" << i << "]: " << b1[i] << '\n'; 
    } 
    b1[0] = true; // modifies the first bit through bitset::refence 
    std::cout << "After setting bit 0, the bitset holds " << b1 << '\n'; 
} 

輸出

b1[0]: 0 
b1[1]: 1 
b1[2]: 0 
b1[3]: 1 
b1[4]: 0 
b1[5]: 1 
b1[6]: 0 
b1[7]: 0 
After setting bit 0, the bitset holds 00101011 
+0

希望是在我正要採取的方法有效。順便說一句,如果我不想使用'bitset',那麼應該比三者更優先? – Saksham

+0

您應該使用具有您需要的位數的類型。幾百個整數對我來說聽起來不是很多,所以它應該是非常快速的工作方式。 –

+0

哦,好的。我需要10位,每位數字一位。謝謝! – Saksham

1

多少標誌你需要什麼?如果你需要8使用一個字符,如果你需要16使用一個短。只根據需要使用盡可能多的空間,但要確保不要過度優化和繪製自己(或投影到)角落。

如果你不知道它是如何工作的每個標誌是二的冪佔據一個特定位在整數無非是友好的名字等等。

1是第一比特 2是第二位 4是第三位 圖8是第四個比特 等...

例如,如果你有兩個標誌 READ_ACCESS = 2(0010 ) WRITE_ACCESS = 8(1000)

您將您的標誌設置爲讀/寫,那麼您的整數值將爲10(1010)。

因此,一個字符有8位,這將讓你有8個標誌。 一個選擇比另一個選擇的唯一好處是大小。如果你有一個嵌入式設備,明智地選擇,如果你有一個典型的桌面自由選擇像一個很長的時間,並留下一些空間擺動。

+0

+1用於推薦內置類型並且不會被C99固定大小的typedefs帶走。 –

相關問題