เครื่องคำนวณความยาวบิตและไบต์ - เครื่องมือขนาดข้อมูลฟรี
คำนวณความยาวบิตและไบต์สำหรับตัวเลขจำนวนเต็ม สตริงเลขฐานสิบหก และข้อความด้วยการเข้ารหัส UTF-8, UTF-16, ASCII เครื่องมือออนไลน์ฟรีสำหรับนักพัฒนา นักวิทยาศาสตร์ข้อมูล และวิศวกรเครือข่าย
เครื่องคำนวณความยาวบิตและไบต์
8 บิต = 1 ไบต์
การแสดงภาพ
เอกสารประกอบการใช้งาน
เครื่องคำนวณความยาวบิตและไบต์คืออะไร?
เครื่องคำนวณความยาวบิตและไบต์ใช้หาจำนวนบิตและไบต์ที่ข้อมูลชิ้นหนึ่งต้องใช้ บิตคือตัวเลขฐานสองหนึ่งหลัก ได้แก่ 0 หรือ 1 ไบต์คือกลุ่มของ 8 บิต เครื่องคำนวณนี้รับจำนวนเต็ม สตริงเลขฐานสิบหก หรือสตริงข้อความ และรายงานขนาดที่แน่นอนในทั้งสองหน่วย
สิ่งนี้มีความสำคัญต่อการเขียนโปรแกรม เครือข่าย และการจัดเก็บข้อมูล คอลัมน์ฐานข้อมูล แพ็กเก็ตเครือข่าย และไฟล์บนดิสก์ล้วนมีขนาดที่วัดเป็นไบต์ และขนาดนั้นขึ้นอยู่กับวิธีเขียนข้อมูล
วิธีคำนวณความยาวบิตของจำนวนเต็ม
ความยาวบิตของจำนวนเต็มบวกคือจำนวนหลักในรูปเลขฐานสองของจำนวนนั้น ตัวอย่างเช่น 255 ในเลขฐานสองคือ 11111111 ซึ่งมี 8 หลัก ดังนั้นความยาวบิตจึงเท่ากับ 8
สูตร: สำหรับจำนวนเต็มบวก n ความยาวบิตคือจำนวนหลักในการเขียน n ในฐาน 2 กรณีพิเศษ n = 0 มีความยาวบิตเท่ากับ 1
จำนวนเต็มลบใช้ส่วนเติมเต็มสอง ซึ่งเป็นวิธีมาตรฐานที่คอมพิวเตอร์ใช้จัดเก็บจำนวนที่มีเครื่องหมาย ความยาวบิตของจำนวนเต็มลบคือจำนวนบิตน้อยที่สุดที่สามารถเก็บจำนวนนั้นในรูปส่วนเติมเต็มสองได้ ตัวอย่างเช่น −128 อยู่ใน 8 บิตได้ (ในรูป 10000000) แต่ −129 ต้องใช้ 9 บิต เพราะ 8 บิตสามารถเก็บค่าได้ต่ำสุดเพียง −128
เมื่อทราบความยาวบิตแล้ว จะหาความยาวไบต์ได้โดยปัดขึ้นเป็นจำนวนไบต์เต็มที่ใกล้ที่สุด:
ความยาวไบต์ = ⌈ความยาวบิต ÷ 8⌉
สัญลักษณ์ ⌈ ⌉ หมายถึง “ปัดขึ้น” ค่าที่มี 9 บิตยังคงต้องใช้ไบต์เต็ม 2 ไบต์ เพราะไม่สามารถแบ่งไบต์ออกเป็นส่วนย่อยได้
ตัวอย่างพร้อมวิธีทำ
| จำนวนเต็ม | ความยาวบิต | ความยาวไบต์ |
|---|---|---|
| 0 | 1 | 1 |
| 255 | 8 | 1 |
| 256 | 9 | 2 |
| −128 | 8 | 1 |
| −129 | 9 | 2 |
| 18,446,744,073,709,551,615 (2⁶⁴ − 1) | 64 | 8 |
วิธีคำนวณความยาวบิตของสตริงเลขฐานสิบหก
เลขฐานสิบหกแต่ละหลัก (0–9, A–F) แทนค่าได้เท่ากับ 4 บิตพอดี เนื่องจาก 4 บิตสามารถเก็บค่าที่เป็นไปได้ 16 ค่า
สูตร: ความยาวบิต = จำนวนหลักเลขฐานสิบหก × 4 ส่วนความยาวไบต์ก็คือความยาวบิตหารด้วย 8 แล้วปัดขึ้น
ตัวอย่างเช่น สตริงเลขฐานสิบหก “FF” มี 2 หลัก ดังนั้นความยาวบิตคือ 2 × 4 = 8 บิต หรือ 1 ไบต์ สตริงเลขฐานสิบหก “ABCD” มี 4 หลัก จึงมี 16 บิต หรือ 2 ไบต์ ระบบจะลบช่องว่างและอักขระเว้นวรรคอื่น ๆ ออกก่อนนับ แม้มีจำนวนหลักเป็นเลขคี่ก็ยังปัดขึ้นเป็นไบต์เต็ม: “F” มี 4 บิต ซึ่งเครื่องคำนวณรายงานเป็น 1 ไบต์
วิธีคำนวณความยาวไบต์ของสตริงข้อความ
สำหรับข้อความ ขนาดจะขึ้นอยู่กับการเข้ารหัสอักขระ ซึ่งเป็นกฎที่ใช้แปลงอักขระให้เป็นไบต์ เครื่องคำนวณรองรับการเข้ารหัสห้าชนิด:
- UTF-8: การเข้ารหัสความยาวแปรผันที่ใช้ทั่วทั้งเว็บ อักขระแต่ละตัวใช้ 1 ถึง 4 ไบต์ ตัวอักษรภาษาอังกฤษ ตัวเลข และเครื่องหมายวรรคตอนทั่วไปใช้ตัวละ 1 ไบต์
- UTF-16: ใช้ภายใน JavaScript และ Windows อักขระส่วนใหญ่ใช้ 2 ไบต์ ส่วนอักขระนอกระนาบอักขระหลายภาษาเบื้องต้น เช่น อีโมจิจำนวนมาก ใช้ 4 ไบต์
- UTF-32: การเข้ารหัสความยาวคงที่ อักขระทุกตัวใช้ 4 ไบต์พอดี ไม่ว่าอักขระนั้นจะเป็นตัวใด
- ASCII: การเข้ารหัสแบบ 7 บิตที่ครอบคลุมอักขระ 128 ตัว ส่วนใหญ่เป็นตัวอักษรภาษาอังกฤษ ตัวเลข และเครื่องหมายวรรคตอนพื้นฐาน อักขระแต่ละตัวใช้ 1 ไบต์ อักขระใดก็ตามที่อยู่นอกชุดนี้จะถูกปฏิเสธ
- Latin-1 (ISO-8859-1): การเข้ารหัสแบบ 8 บิตที่ครอบคลุมอักขระ 256 ตัว โดยเพิ่มตัวอักษรที่มีเครื่องหมายกำกับซึ่งใช้ในภาษายุโรปตะวันตก อักขระแต่ละตัวใช้ 1 ไบต์ อักขระนอกชุดนี้จะถูกปฏิเสธ
สูตร: ความยาวไบต์ = จำนวนไบต์ที่การเข้ารหัสสร้างขึ้นสำหรับสตริง ความยาวบิต = ความยาวไบต์ × 8
จำนวนที่นับครอบคลุมเฉพาะตัวข้อความเอง ไม่มีการเพิ่มเครื่องหมายลำดับไบต์ ดังนั้นจำนวนของ UTF-16 หรือ UTF-32 ในที่นี้จึงน้อยกว่าจำนวนจากเครื่องมือที่เขียนเครื่องหมายไว้ตอนต้นอยู่ 2 หรือ 4 ไบต์
ตัวอย่างพร้อมวิธีทำ
ข้อความ “Hello, world!” มีอักขระ 13 ตัว ซึ่งทั้งหมดเป็นตัวอักษรและเครื่องหมายวรรคตอน ASCII ทั่วไป
- UTF-8: 13 ไบต์ (104 บิต) เนื่องจากอักขระทุกตัวใช้ 1 ไบต์
- UTF-16: 26 ไบต์ (208 บิต) เนื่องจากอักขระทุกตัวใช้ 2 ไบต์
ข้อความ “こんにちは世界” (อักขระภาษาญี่ปุ่นเจ็ดตัว) ใช้ 3 ไบต์ต่ออักขระใน UTF-8 รวมเป็น 21 ไบต์ (168 บิต)
อีโมจิอย่าง 😀 อยู่นอกระนาบอักขระหลายภาษาเบื้องต้น อีโมจินี้ใช้ 4 ไบต์ใน UTF-8 ใช้ 4 ไบต์ใน UTF-16 (ในรูปคู่ตัวแทน) และใช้ 4 ไบต์ใน UTF-32
เหตุใดจำนวนเต็มที่มีเครื่องหมายจึงทำให้คำตอบเปลี่ยนไป
คอมพิวเตอร์จัดเก็บจำนวนลบด้วยส่วนเติมเต็มสองแทนการใช้เครื่องหมายลบธรรมดา ซึ่งหมายความว่าความยาวบิตของจำนวนเต็มลบไม่ได้เท่ากับความยาวบิตของค่าสัมบูรณ์บวกหนึ่งโดยตรง กฎคือ ความยาวบิตเป็นจำนวนบิต k ที่น้อยที่สุดซึ่งค่าตัวเลขมีค่าไม่น้อยกว่า −2^(k−1) นั่นคือเหตุผลที่ −128 (ซึ่งเท่ากับ −2⁷) อยู่ใน 8 บิตได้ ขณะที่ −129 ต้องใช้ 9 บิต
คำถามที่พบบ่อย
จะแปลงไบต์เป็นบิตได้อย่างไร คูณด้วย 8 ไบต์สิบไบต์เท่ากับ 80 บิต เพราะตามนิยามแล้วแต่ละไบต์มี 8 บิต
ความยาวบิตและความยาวไบต์แตกต่างกันอย่างไร ความยาวบิตนับเลขฐานสองแต่ละหลัก ส่วนความยาวไบต์นับเป็นกลุ่ม กลุ่มละ 8 บิต และปัดขึ้นเป็นไบต์เต็มถัดไปเมื่อความยาวบิตไม่ใช่พหุคูณของ 8
อักขระ UTF-8 ใช้กี่ไบต์ ใช้ระหว่าง 1 ถึง 4 ไบต์ อักขระที่ใช้ร่วมกับ ASCII ใช้ 1 ไบต์ อักขระละติน อักษรกรีก และอักษรซีริลลิกที่มีเครื่องหมายกำกับจำนวนมากใช้ 2 ไบต์ อักขระภาษาจีน ญี่ปุ่น และเกาหลีส่วนใหญ่ใช้ 3 ไบต์ อีโมจิและสัญลักษณ์หายากอื่น ๆ ใช้ 4 ไบต์
คำนวณความยาวไบต์ของสตริงเลขฐานสิบหกอย่างไร นับหลักเลขฐานสิบหกหลังจากลบช่องว่างแล้ว คูณด้วย 4 เพื่อหาจำนวนบิต จากนั้นปัดขึ้นเป็นไบต์เต็ม ไบต์แต่ละไบต์มีเลขฐานสิบหก 2 หลัก ดังนั้น “FF” คือ 1 ไบต์ และ “ABCD” คือ 2 ไบต์ เลขฐานสิบหกเพียงหลักเดียว เช่น “F” มี 4 บิต แต่ยังคงใช้พื้นที่ 1 ไบต์
เหตุใดจำนวนเต็มลบบางครั้งจึงต้องใช้บิตมากกว่าจำนวนเต็มบวกที่มีค่าเท่ากัน ส่วนเติมเต็มสองใช้หนึ่งบิตเพื่อระบุเครื่องหมาย แต่บิตนั้นใช้ร่วมกับช่วงค่าของตัวเลข แทนที่จะเพิ่มเข้ามาอีกหนึ่งบิตในทุกกรณี −128 อยู่ใน 8 บิตเดียวกับค่าบวกที่สูงสุดถึง 127 แต่ −129 ไม่สามารถอยู่ใน 8 บิตได้อีกต่อไปและต้องใช้ 9 บิต
เครื่องคำนวณนี้รับข้อมูลขนาดเท่าใด จำนวนเต็ม สตริงเลขฐานสิบหก และสตริงข้อความที่มีความยาวไม่เกิน 1,000,000 อักขระ
เอกสารอ้างอิง
- "Character encoding." Wikipedia, มูลนิธิวิกิมีเดีย https://en.wikipedia.org/wiki/Character_encoding
- "UTF-8, UTF-16, UTF-32 & BOM." Unicode, Inc. https://www.unicode.org/faq/utf_bom.html
- "Two's complement." Wikipedia, มูลนิธิวิกิมีเดีย https://en.wikipedia.org/wiki/Two%27s_complement