Sebuah bool membutuhkan 8 bit untuk menyimpan sebuah flag: true atau false. Bitvector32 memungkinkan Anda untuk menyimpan 32 flag dalam 32 bit. Jadi 32 flag bool akan menjadi 256 bit.

Namun...

Bitvector32 mengharuskan Anda untuk mendeklarasikan topeng bilangan bulat untuk setiap bit yang ingin Anda tangani. Topeng itu adalah bilangan bulat, atau 32 bit -- 32 topeng kali 32 bit + 32 bitvector32 bit = 1056 bit untuk 32 bendera.

Apa gunanya bitvector32 jika bitmask lebih dari mengimbangi penyimpanan flag yang efisien?

-3
Dr. Avery 9 Agustus 2019, 09:11

1 menjawab

Jawaban Terbaik

Jika saya memiliki hingga 32 flag, saya perlu menguji semuanya secara bersamaan, BitVector32 jauh lebih efisien:

if (bv & 0X...) ...

Akan menguji beberapa flag yang "aktif".

if ((bv & 0X...) == 0) ...

Tes untuk semua flag yang ditentukan dimatikan.

Jika saya memiliki satu miliar flag, saya lebih suka memainkan div dan mod 32 untuk menemukan bitvector mana yang akan digunakan -- daripada menggunakan banyak RAM.

(Sebenarnya, saya mungkin akan menggunakan long atau longlong, dan tidak repot dengan BitVector.)

OTOH, hanya untuk beberapa flag, saya mungkin akan menggunakan thingies 1-byte. Memboroskan beberapa byte, tetapi lebih cepat.

Dan jika saya membutuhkan ya/tidak/mungkin, sedikit pun tidak akan berhasil. (Idem untuk M/F/...)

0
Rick James 13 Agustus 2019, 23:17