Latar belakang
- Bahasa C menyediakan jumlah bit dalam satu byte sebagai nilai yang ditentukan implementasi melalui makro
CHAR_BIT, dan C++ mewarisi hal ini apa adanya
- Sebagian besar perangkat keras modern telah mengerucut pada asumsi bahwa byte adalah 8 bit
- Dokumen ini mengusulkan agar C++ secara resmi menyatakan bahwa byte berukuran 8 bit
- Kompiler utama sudah mendukung byte 8 bit
- GCC menetapkan nilai bawaan ke 8
- LLVM menetapkan
__CHAR_BIT__ ke 8
- MSVC mendefinisikan
CHAR_BIT sebagai 8
- POSIX telah mensyaratkan byte 8 bit sejak 2001
- Perangkat lunak yang tidak mendukung byte 8 bit tidak kompatibel
Dampak terhadap C
- Usulan ini menelaah apakah C++ masih relevan untuk arsitektur yang menggunakan byte non-8-bit
- Komite bahasa C dapat mencapai kesimpulan yang berbeda, dan idealnya kedua komite selaras
Bahasa
- Dalam model memori C++, unit penyimpanan dasar adalah byte, dan byte terdiri dari 8 bit
- Makro
CHAR_BIT dilaporkan di header climits
Pustaka
- Header
climits mendefinisikan semua makro sama seperti header pustaka standar C limits.h
- Header
cstdint menyediakan tipe bilangan bulat dengan lebar tertentu serta makro yang menetapkan batas tipe bilangan bulat
- Semua tipe dan makro hanya tidak bersifat opsional jika byte berukuran 8 bit
Ringkasan GN⁺
- Dokumen ini adalah usulan untuk secara resmi menyatakan bahwa byte dalam C++ berukuran 8 bit
- Sebagian besar platform perangkat keras dan perangkat lunak modern menggunakan byte 8 bit, sehingga masuk akal untuk menstandarkannya
- Arsitektur byte non-8-bit tidak kompatibel dengan C++ modern, dan pentingnya arsitektur semacam itu terus menurun
- Usulan ini mengurangi kompleksitas C++ dan membantu programmer baru memahami bahasa tersebut dengan lebih mudah
- Proyek lain dengan fungsi serupa termasuk standar POSIX
1 komentar
Komentar Hacker News
Ada penyebutan tentang "Signed Integers are Two’s Complement" dalam seri JF "Can we acknowledge that every real computer works this way?"
Bahasa D membuat kemajuan besar dalam hal berikut
Sebagian orang masih menangani DSP
Secara pribadi, ada rasa senang mendokumentasikan konsol fantasi 12-bit yang "memberikan bit per byte 50% lebih banyak daripada pesaing"
Ada pertanyaan tentang apa yang bisa dihapuskan atau disederhanakan oleh C++
Ada perasaan campur aduk soal tidak adanya penggunaan yang benar-benar bermakna untuk CHAR_BIT selain 8
Terima kasih atas minat terhadap proposal ini, dan draf yang diperbarui telah ditulis berdasarkan masukan
Menyukai ide mikrokomputer retro dengan byte 6-bit
Setuju untuk memaksa int8_t == char == 8-bit, tetapi tidak yakin soal menyebarkan kesalahpahaman bahwa byte itu 8-bit