Cơ sở
- Ngôn ngữ C cung cấp số bit trong một byte dưới dạng định nghĩa phụ thuộc triển khai thông qua macro
CHAR_BIT, và C++ cũng kế thừa nguyên trạng điều này
- Phần lớn phần cứng hiện đại đều hội tụ về giả định rằng byte là 8 bit
- Tài liệu này đề xuất chính thức nêu rõ trong C++ rằng byte là 8 bit
- Các trình biên dịch chính đã hỗ trợ byte 8 bit
- GCC đặt giá trị mặc định là 8
- LLVM đặt
__CHAR_BIT__ là 8
- MSVC định nghĩa
CHAR_BIT là 8
- POSIX đã yêu cầu byte 8 bit từ năm 2001
- Phần mềm không hỗ trợ byte 8 bit sẽ không tương thích
Ảnh hưởng tới C
- Đề xuất này xem xét liệu C++ còn có ý nghĩa với các kiến trúc sử dụng byte không phải 8 bit hay không
- Ủy ban ngôn ngữ C có thể đi đến kết luận khác, và lý tưởng nhất là hai ủy ban đạt được sự thống nhất
Ngôn ngữ
- Trong mô hình bộ nhớ của C++, đơn vị lưu trữ cơ bản là byte, và byte gồm 8 bit
- Macro
CHAR_BIT được khai báo trong header climits
Thư viện
- Header
climits định nghĩa mọi macro giống hệt header thư viện chuẩn C limits.h
- Header
cstdint cung cấp các kiểu số nguyên có độ rộng xác định và các macro chỉ định giới hạn của kiểu số nguyên
- Mọi kiểu và macro chỉ không còn là tùy chọn khi byte là 8 bit
Tóm tắt của GN⁺
- Tài liệu này là một đề xuất nhằm chính thức nêu rõ trong C++ rằng byte là 8 bit
- Phần lớn nền tảng phần cứng và phần mềm hiện đại đều sử dụng byte 8 bit, nên việc chuẩn hóa điều này là hợp lý
- Các kiến trúc byte không phải 8 bit không tương thích với C++ hiện đại, và tầm quan trọng của các kiến trúc này đang giảm dần
- Đề xuất này giúp giảm độ phức tạp của C++ và giúp lập trình viên mới hiểu ngôn ngữ dễ hơn
- Một dự án khác có chức năng tương tự là tiêu chuẩn POSIX
1 bình luận
Ý kiến trên Hacker News
Trong loạt bài của JF với câu "Can we acknowledge that every real computer works this way?", đã có nhắc đến "Signed Integers are Two’s Complement"
Ngôn ngữ D đã tạo ra bước tiến lớn ở các điểm sau
Một số người vẫn đang làm việc với DSP
Cá nhân tôi thấy khá thú vị khi viết tài liệu cho một máy chơi game giả tưởng 12 bit với khẩu hiệu "nhiều hơn 50% số bit trên mỗi byte so với đối thủ"
Có câu hỏi về những gì C++ có thể loại bỏ hoặc đơn giản hóa
rand()bị lỗi và không thể sửa được, và cũng nghe rằng đến giờ nó vẫn chưa bị loại bỏTôi có cảm xúc lẫn lộn trước việc
CHAR_BITkhông còn công dụng đáng kể nào nếu khác 8Cảm ơn mọi người đã quan tâm đến đề xuất; dựa trên phản hồi, tôi đã viết một bản nháp cập nhật
Tôi thích ý tưởng về một máy vi tính retro với byte 6 bit
Tôi đồng ý với việc ép
int8_t == char == 8 bit, nhưng không chắc về việc lan truyền quan niệm rằng byte là 8 bit