Frage

Ich muss leider zugeben, dass ich C++ schon eine ganze Weile nicht mehr verwendet habe, aber ich fürchte, jetzt muss ich es tun, und ich bin etwas eingerostet.
Ich benötige eine Bitmap und mir ist die Leistung wichtig. Meine Bitmap-Größe beträgt nicht mehr als 25 Bit.
Ich habe darüber nachgedacht, unsigned int zu verwenden, aber ich fürchte, ich kann mich nicht erinnern, wie es in c/c++ implementiert ist

Ist unsigned int als reguläre Binärzahl implementiert?
Ich bin auch offen für alle anderen Vorschläge für eine Bitmap.
Vielen Dank im Voraus für die Hilfe!

War es hilfreich?

Lösung

Benutze ein std::bitset<25> aus der Kopfzeile <bitset>. bitset kann mit indiziert werden [] und ist eine Vorlage, daher wird sie wahrscheinlich nur auf eine erweitert unsigned int (oder gleichwertig) mit allen Operationen inline.

Andere Tipps

Haben Sie darüber nachgedacht std::bitset aus <bitset> Header-Datei?

Beispiel:

#include <iostream>
#include <bitset>

int main() {
        std::bitset<25> bits(146);
        std::cout << bits << std::endl;

        //using operator[] to access individual bit manually!
        for(size_t i = 0 ; i < bits.size() ; ++i)
           std::cout << bits[i] << " ";
        return 0;
}

Ausgabe:

0000000000000000010010010
0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Notiz: bits[0] ist das niederwertigste Bit, while bits[bits.size()-1] ist das Wichtigste!

Online-Demo: http://ideone.com/3sSF0

Betrachten Sie einen bitset stattdessen.

Sie sollten in der Lage sein, einen ganzzahligen Typ für eine Bitmap zu verwenden, vorausgesetzt, sie verfügt über genügend Bits für Sie.

Es gibt jedoch eine <bitset> in der Standardbibliothek.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top