"อักขระ" มีกี่บิตหรือไบต์
"อักขระ" มีกี่บิตหรือไบต์
คำตอบ:
ขึ้นอยู่กับว่าตัวละครคืออะไรและมีการเข้ารหัสอะไร:
อักขระ ASCII ในการเข้ารหัส ASCII 8 บิตคือ 8 บิต (1 ไบต์) แม้ว่าจะใส่ได้ 7 บิตก็ตาม
อักขระ ISO-8895-1 ในการเข้ารหัส ISO-8859-1 คือ 8 บิต (1 ไบต์)
อักขระ Unicode ในการเข้ารหัส UTF-8 อยู่ระหว่าง 8 บิต (1 ไบต์) และ 32 บิต (4 ไบต์)
อักขระ Unicode ในการเข้ารหัส UTF-16 อยู่ระหว่าง 16 (2 ไบต์) และ 32 บิต (4 ไบต์) แม้ว่าอักขระทั่วไปส่วนใหญ่จะใช้เวลา 16 บิต นี่คือการเข้ารหัสที่ Windows ใช้ภายใน
อักขระ Unicode ในการเข้ารหัส UTF-32 มักจะเป็น 32 บิต (4 ไบต์)
อักขระ ASCII ใน UTF-8 คือ 8 บิต (1 ไบต์) และใน UTF-16 - 16 บิต
อักขระเพิ่มเติม (ที่ไม่ใช่ ASCII) ใน ISO-8895-1 (0xA0-0xFF) จะใช้เวลา 16 บิตใน UTF-8 และ UTF-16
นั่นหมายความว่ามีบิตระหว่าง 0.03125 ถึง 0.125 อักขระ
ไบต์มี 8 บิต (โดยปกติจะพูดใน Windows)
อย่างไรก็ตามหากคุณกำลังจัดการกับอักขระจะขึ้นอยู่กับชุดอักขระ / การเข้ารหัส อักขระ Unicode สามารถมีขนาด 2 หรือ 4 ไบต์ซึ่งจะเป็น 16 หรือ 32 บิตในขณะที่Windows-1252บางครั้งเรียกว่า ANSI ไม่ถูกต้องมีเพียง 1 ไบต์ดังนั้น 8 บิต
ใน Windows เวอร์ชันเอเชียและอื่น ๆ บางระบบจะทำงานเป็นไบต์คู่ดังนั้นอักขระจึงมีขนาด 16 บิต
แก้ไข
ตามความคิดเห็นของ Matteo Windows เวอร์ชันร่วมสมัยทั้งหมดใช้ 16 บิตภายในต่ออักขระ
wchar_t
) ไม่ใช่เฉพาะเอเชีย ดังนั้นควรทำแอปพลิเคชันที่ใหม่กว่าทั้งหมด (ใน Linux แต่เป็นเรื่องที่แตกต่างไปจากเดิมอย่างสิ้นเชิงเนื่องจากโดยปกติ UTF-8 จะถูกใช้ทั่วทั้งระบบ)
char
ในขณะที่สตริง Unicode จะถูกจัดเก็บโดยใช้wchar_t
ประเภท อย่างไรก็ตามเมื่อ NT เริ่มต้นwchar_t
ก็เพียงพอที่จะหลีกเลี่ยงคู่ตัวแทน แต่ตอนนี้เป็น UTF-16 แม้แต่wchar_t
สตริงก็สามารถมีอักขระที่มีความยาวผันแปรได้ดังนั้นใน Windows อักขระ Unicode อาจใช้เวลาตั้งแต่ 2 ถึง 4 ไบต์ (1 หรือ 2 wchar_t
).
:)