Tuyên bố miễn trừ trách nhiệm - Tôi không phải là nhà lý thuyết thông tin, chỉ là một con khỉ mã hoạt động chủ yếu trong C và C ++ (và do đó, với các loại chiều rộng cố định), và câu trả lời của tôi sẽ xuất phát từ quan điểm cụ thể đó.
Trung bình phải mất 3,2 bit để biểu thị một chữ số thập phân duy nhất - 0 đến 7 có thể được biểu diễn thành 3 bit, trong khi 8 và 9 yêu cầu 4. (8*3 + 2*4)/10 == 3.2
1 .
Điều này ít hữu ích hơn âm thanh. Đối với một điều, rõ ràng bạn không có phân số một chút. Mặt khác, nếu bạn đang sử dụng các loại số nguyên gốc (nghĩa là không phải BCD hoặc BigInt), bạn sẽ không lưu trữ các giá trị dưới dạng một chuỗi các chữ số thập phân (hoặc tương đương nhị phân của chúng). Loại 8 bit có thể lưu trữ một số giá trị có tối đa 3 chữ số thập phân, nhưng bạn không thể biểu thị tất cả các giá trị 3 chữ số thập phân trong 8 bit - phạm vi là [0..255]
. Bạn không thể biểu diễn các giá trị [256..999]
chỉ trong 8 bit.
Khi chúng ta nói về các giá trị , chúng ta sẽ sử dụng số thập phân nếu ứng dụng mong đợi nó (ví dụ: ứng dụng ngân hàng số). Khi chúng ta nói về bit , chúng ta thường sử dụng hex hoặc nhị phân (Tôi hầu như không bao giờ sử dụng bát phân vì tôi làm việc trên các hệ thống sử dụng byte 8 bit và từ 32 bit, không chia hết cho 3).
Các giá trị được biểu thị bằng số thập phân không ánh xạ rõ ràng vào các chuỗi nhị phân. Lấy giá trị thập phân 255
. Các khoản tương đương nhị phân của mỗi chữ số sẽ là 010
, 101
, 101
. Tuy nhiên, đại diện nhị phân của giá trị 255
là 11111111
. Đơn giản là không có sự tương ứng giữa bất kỳ chữ số thập phân nào trong giá trị với chuỗi nhị phân. Nhưng có một sự tương ứng trực tiếp với các chữ số hex - F == 1111
, vì vậy giá trị đó có thể được biểu diễn như FF
trong hex.
Nếu bạn đang ở trên một hệ thống trong đó các byte 9 bit và các từ 36 bit là chuẩn, thì bát phân có ý nghĩa hơn vì các bit tự nhiên được nhóm thành ba.
- Trên thực tế, trung bình mỗi chữ số nhỏ hơn vì 0 và 1 chỉ yêu cầu một bit, trong khi 2 và 3 chỉ yêu cầu 2 bit. Nhưng, trong thực tế, chúng tôi xem xét 0 đến 7 để lấy 3 bit. Chỉ làm cho cuộc sống dễ dàng hơn bằng nhiều cách.
d
, nó bao gồm một chữ số thập phân, phạm vi0..9
.3*d
bit có nghĩa là ba chữ số thập phân và cho phép bạn biểu diễn các số nguyên từ phạm vi0..999
. Toàn bộ mười bit (nghĩ nhị phân bây giờ) đưa ra một phạm vi0..1023
. 999 khá gần với 1023, nhưng ít hơn một chút. Vì vậy, bạn có thể mong đợid
nên ít hơn 10/3.