Mengapa nilai Boolean disimpan sebagai byte di dalam komputer saat itu hanya membutuhkan satu bit


32

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?


10
Ini tidak sepenuhnya benar. Beberapa bahasa (seperti C / C ++) menyediakan cara untuk menyimpan nilai boolean sebagai bit tunggal, jika bit ini dibundel dalam byte tunggal. Dengan kata lain, dalam C, Anda dapat menyimpan delapan boolean dalam satu byte. Tetapi sedikit yang pernah menggunakan ini karena memori murah dan prosesor memanipulasi data dalam potongan 8/16/32/64 bit.
Gort the Robot

Jawaban untuk pertanyaan serupa ini adalah apa yang harus Anda lihat! Anda akan mendapatkan referensi besar di sana ... Ceria!
Sam


Jawaban:


49

Ini ada hubungannya dengan apa yang dapat dengan mudah ditangani oleh CPU. Misalnya pada prosesor x86 ada eax(32 bit), ax(16 bit) dan ah(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.


6
Satu-satunya kata yang Anda lewatkan adalah "Penjajaran Batas".
Manoj R

3
Di sisi lain, saya telah melihat speedup 2x dari menggunakan bit individual, mungkin karena penggunaan cache yang lebih baik dengan kumpulan data yang lebih kecil.
Michael Borgwardt

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.