битовая карта в c ++ - будет ли unsigned int делать работу? - PullRequest
1 голос
/ 26 марта 2011

Я боюсь признаться, я уже некоторое время не использовал C ++, но боюсь, что должен сейчас, и я немного ржавый.
Мне нужно иметь растровое изображение, и я беспокоюсь о производительности, мой размер растрового изображения не будет превышать 25 бит.
Я думал об использовании unsigned int, но боюсь, я не помню, как это реализовано в c / c ++

Реализуется ли unsigned int как обычное двоичное число?
Я также открыт для любых других предложений по растровому изображению.
Заранее спасибо за помощь!

Ответы [ 4 ]

4 голосов
/ 26 марта 2011

Рассматривали ли вы std :: bitset из <bitset> заголовочного файла?

Пример:

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

Вывод:

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

Примечание: bits[0] - младший значащий бит, а bits[bits.size()-1] - старший значащий бит *

Демонстрационная версия: http://ideone.com/3sSF0

4 голосов
/ 26 марта 2011

Используйте std::bitset<25> из заголовка <bitset>.bitset может быть проиндексирован с помощью [] и является шаблоном, поэтому он, вероятно, расширяется до unsigned int (или эквивалент) со всеми встроенными операциями.

0 голосов
/ 26 марта 2011

Вы должны иметь возможность использовать целочисленный тип для битовой карты, предполагая, что для вас достаточно битов.

Однако в стандартной библиотеке есть <bitset>.

0 голосов
/ 26 марта 2011

вместо bitset .

...