خريطة بت في c++ - هل ستقوم int غير الموقعة بهذه المهمة؟

StackOverflow https://stackoverflow.com/questions/5441762

سؤال

أخشى أن أعترف بأنني لم أستخدم C++ منذ فترة ولكن أخشى أنني مضطر إلى ذلك الآن، وأنا صدئ بعض الشيء.
أحتاج إلى صورة نقطية، وأنا أهتم بالأداء، ولن يعد حجم الصورة النقطية الخاص بي 25 بت.
كنت أفكر في استخدام int غير الموقع، ولكن أخشى أنني لا أتذكر كيفية تنفيذه في c/c++

هل يتم تطبيق unsigned int كرقم ثنائي عادي؟
أنا أيضًا منفتح على أي اقتراحات أخرى للصورة النقطية.
شكرا مقدما للمساعدة!

هل كانت مفيدة؟

المحلول

استخدم std::bitset<25> من الرأس <bitset>. bitset يمكن فهرستها مع [] وهو قالب، لذلك من المحتمل أن يتوسع إلى مجرد unsigned int (أو ما يعادله) مع جميع العمليات المضمنة.

نصائح أخرى

هل فكرت الأمراض المنقولة جنسيا::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

النظر في bitset بدلا من ذلك.

يجب أن تكون قادرا على استخدام نوع عدد صحيح لخريطة قليلا، على افتراض أنه يحتوي على أجزاء كافية لك.

ومع ذلك، هناك <bitset> في المكتبة القياسية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top