Domanda

Ho paura di ammettere, non ho usato C ++ per un po 'ora, ma temo di dover ora, e sono un po' arrugginito.
Devo avere una bitmap e mi interessa le prestazioni, la mia dimensione bitmap non sarà più di 25 bit.
Stavo pensando di usare Int non firmato, ma temo di non ricordare come è implementato in c / c ++
.
non è firmato int implementato come un numero binario regolare?
Sono anche aperto a qualsiasi altro suggerimento per una bitmap.
Grazie in anticipo per l'aiuto!

È stato utile?

Soluzione

Utilizzare un std::bitset<25> dall'intestazione <bitset>.bitset può essere indicizzato con [] ed è un modello, quindi probabilmente si espande solo a un unsigned int (o equivalente) con tutte le operazioni innestate.

Altri suggerimenti

Hai preso in considerazione std :: bitset dal file di intestazione <bitset>? Esempio:

#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;
}
.

Uscita:

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
.

Nota: bits[0] è il bit meno significativo, mentre bits[bits.size()-1] è il bit più significativo!

DEMO ONLINE: http://ideone.com/3ssf0

Considera un Bitset invece.

Dovresti essere in grado di utilizzare un tipo intero per una mappa bit, supponendo che abbia abbastanza bit per te.

Tuttavia, c'è un <bitset> nella libreria standard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top