Có bao nhiêu bit hoặc byte trong một ký tự? [đóng cửa]


96

Có bao nhiêu bit hoặc byte cho mỗi "ký tự"?


1
Câu hỏi và tiêu đề của bạn yêu cầu những điều khác nhau. Dù sao tôi cũng không hiểu bạn có thể giải thích thêm được không?
galymzhan,

Vâng, tôi cũng không chắc về điều đó. Nhưng byte phù hợp hơn với tiêu đề của anh ta. Số lượng ký tự trong một bit có ý nghĩa nhỏ, nhưng bao nhiêu bit trong một ký tự có ý nghĩa hơn. Tuy nhiên, nó yêu cầu ngữ cảnh, như đã đề cập ở trên.
Skurmedel,

4
@Skurmedel: Bạn thấy thế nào? Tiêu đề cũng cho biết "bit".
Cody Grey

@Cody Grey: Hãy xem câu trả lời đã chỉnh sửa của tôi. Thẻ của anh ấy nói byte, vì vậy tôi nghĩ đó là lỗi đánh máy. Tôi có thể sai mặc dù.
Skurmedel,

@Skurmedel: Tôi không hiểu ... Bạn chưa đăng câu trả lời cho câu hỏi. Và có, tôi đã không nhận thấy thẻ trước đây. Nhưng tôi vẫn có xu hướng cho rằng 2/3 là trận đấu tốt hơn 1/3.
Cody Grey

Câu trả lời:


200

Nó phụ thuộc vào ký tự là gì và mã hóa của nó:

  • Một ký tự ASCII trong bảng mã ASCII 8 bit là 8 bit (1 byte), mặc dù nó có thể vừa với 7 bit.

  • Một ký tự ISO-8895-1 trong mã hóa ISO-8859-1 là 8 bit (1 byte).

  • Một ký tự Unicode trong bảng mã UTF-8 nằm trong khoảng từ 8 bit (1 byte) đến 32 bit (4 byte).

  • Một ký tự Unicode trong mã hóa UTF-16 nằm trong khoảng từ 16 (2 byte) đến 32 bit (4 byte), mặc dù hầu hết các ký tự phổ biến đều có 16 bit. Đây là bảng mã được Windows sử dụng trong nội bộ.

  • Một ký tự Unicode trong bảng mã UTF-32 luôn là 32 bit (4 byte).

  • Một ký tự ASCII trong UTF-8 là 8 bit (1 byte) và trong UTF-16 - 16 bit.

  • Các ký tự bổ sung (không phải ASCII) trong ISO-8895-1 (0xA0-0xFF) sẽ chiếm 16 bit trong UTF-8 và UTF-16.

Điều đó có nghĩa là có từ 0,03125 đến 0,125 ký tự trong một bit.


Câu trả lời này giúp ích rất nhiều khi xử lý các ổ cắm, mã hóa, văn bản, v.v.
Mário Meyrelles

17

Có 8 bit trong một byte (thường nói trong Windows).

Tuy nhiên, nếu bạn đang xử lý các ký tự, nó sẽ phụ thuộc vào bộ ký tự / mã hóa. Ký tự Unicode có thể là 2 hoặc 4 byte, do đó sẽ là 16 hoặc 32 bit, trong khi Windows-1252 đôi khi được gọi không chính xác là ANSI chỉ là 1 byte nên 8 bit.

Trong phiên bản Windows Châu Á và một số phiên bản khác, toàn bộ hệ thống chạy ở dạng byte kép, vì vậy một ký tự là 16 bit.

ĐÃ CHỈNH SỬA

Theo nhận xét của Matteo, tất cả các phiên bản Windows hiện đại đều sử dụng 16 bit bên trong cho mỗi ký tự.


một số ứng dụng cũ vẫn sử dụng ký tự 1 byte với mã cục bộ, nhưng tất cả các phiên bản NT của Windows chạy nội bộ với ký tự 2 byte (UCS-2 lên đến NT4, UTF-16 từ Windows 2000 trở đi, được lưu trữ dưới dạng wchar_t), không chỉ phiên bản châu Á, và tất cả các ứng dụng mới hơn cũng vậy. (Trên Linux, thay vào đó, nó là một câu chuyện hoàn toàn khác nhau từ thường UTF-8 được sử dụng trong suốt toàn bộ hệ thống)
Matteo Italia

@Matteo: Lưu ý rằng trong Windows, byte kép không nhất thiết giống với Unicode. Tham khảo
Cody Grey

@Cody Grey: vâng, thông thường khi bạn đọc mã hóa "byte kép" thì đó là nội dung châu Á kế thừa và chúng được lưu trữ dưới dạng nhiều char, trong khi các chuỗi Unicode được lưu trữ bằng cách sử dụng wchar_tkiểu này. Nhân tiện, khi NT được bắt đầu a wchar_tlà đủ để tránh các cặp thay thế, nhưng bây giờ nó là UTF-16 thậm chí các wchar_tchuỗi có thể có các ký tự có độ dài thay đổi, vì vậy trên Windows, một ký tự Unicode trong có thể chiếm từ 2 đến 4 byte (1 hoặc 2 wchar_t).
Matteo Italia,

@Matteo: Vâng, tôi đồng ý với bạn. Tôi nghĩ rằng tôi đã thấy một cái gì đó được đề xuất khác trước khi bạn chỉnh sửa nhận xét đầu tiên của mình, và đó là lúc tôi viết bài của tôi. Chuỗi Unicode UTF-16 hiện được sử dụng nội bộ cho tất cả các phiên bản Windows.
Cody Grey

@Cody Grey: Tôi có xu hướng chỉnh sửa ý kiến của tôi một chút quá nhiều, nó dẫn đến sự nhầm lẫn:)
Matteo Italia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.