Baru-baru ini saya mulai belajar menulis kode, dan dalam buku saya menemukan pertanyaan ini. "Mengapa nilai Boolean disimpan sebagai byte di dalam komputer padahal hanya membutuhkan satu bit?" dapatkah seseorang menjelaskan lebih lanjut tentang pertanyaan ini?
programming-languages
c++
boolean
Tn. 1.0
sumber
sumber
Jawaban:
Ini ada hubungannya dengan apa yang dapat dengan mudah ditangani oleh CPU. Misalnya pada prosesor x86 ada
eax
(32 bit),ax
(16 bit) danah
(8 bit) tetapi tidak ada bit register tunggal. Jadi agar dapat menggunakan bit tunggal CPU harus melakukan baca / modifikasi / tulis untuk mengubah nilai. Jika disimpan sebagai byte, satu baca atau tulis dapat digunakan untuk memeriksa / mengubah nilainya.Selain itu orang mungkin bertanya-tanya apakah akan lebih baik menggunakan bit tunggal vs byte penuh, setelah semua byte akan menghabiskan 7 bit. Kecuali ruang adalah kendala yang harus digunakan untuk byte karena, setidaknya x86 dan saya pikir yang lain, biasanya ada instruksi untuk dengan cepat mengatur / menghapus bool yang jauh lebih cepat daripada membaca / memodifikasi / menulis bit tunggal. . Dari pengukuran pribadi saya telah melihat metode baca / mod / tulis menjadi 5x lebih lambat daripada metode instruksi tunggal.
sumber
Sebagai @ barrem23 menjelaskan , data harus dialamatkan , dan batas terkecil pada arsitektur konvensional adalah byte.
Tapi karena pertanyaan ini ditandai sebagai c ++ , mungkin layak menunjuk bahwa
std::vector<bool>
yang khusus untuk memungkinkan elemen-elemen individu untuk disimpan sebagai bit . Ini akan menghemat ruang dengan mengorbankan beberapa fungsionalitas (misalnya,std::search
mungkin tidak berfungsi).sumber