เมื่อวานได้เข้าประชุมเพื่อร่วมกำหนดคุณสมบัติเฉพาะของคอมพิวเตอร์ของหน่วยงานแห่งหนึ่ง ผมได้เสนอให้กำหนดนิยามของ KB, MB, GB ระหว่างหน่วยความจำของคอมพิวเตอร์ และอื่นๆ ให้แตกต่างกันอย่างชัดเจน อันเนื่องมาจากในเอกสารคุณสมบัติเฉพาะนั้น มีการใช้ MB, GB อยู่ทั้งสองความหมาย แต่ประเด็นนี้ตกไป เพราะกรรมการท่านอื่นเห็นว่าการวัดความจุพวกนี้เป็นการวัดแบบปกติวิสัยอยู่แล้ว ให้ดูตามสเปคของผู้ขายที่ระบุมาได้เลย ซึ่งผมก็ได้แต่ทิ้งข้อคิดเห็นเรื่องความสับสนที่จะเกิดขึ้นในการตรวจรับไว้เท่านั้น จึงขอบันทึกข้อเท็จจริงเรื่องความสับสนดังกล่าว ไว้ที่นี่ เพื่ออ้างอิงต่อไป และได้เข้าไปเพิ่มเติมเนื้อหาเรื่องนี้ใน วิกิพีเดียไทย เรื่อง เมกะไบต์ ไว้อีกทางหนึ่ง
- สำหรับหน่วยความจำในคอมพิวเตอร์ทุกชนิด เช่น แรม, หน่วยความจำแคช จะมีการอ้างตำแหน่งหน่วยความจำด้วยเลขฐานสองอยู่แล้ว การผลิตหน่วยความจำชนิดนี้ จึงอ้างอิงขนาดเป็นพหุคูณของสอง ได้แก่
- KB = 210 1,024 bytes
- MB = 220 = 1,024 x 1,024 = 1,048,576 bytes
- GB = 230 = 1,024 x 1,024 x 1,024 = 1,073,741,824 bytes
- สำหรับหน่วยวัดอื่นๆ เช่น ความจุของหน่วยเก็บข้อมูลที่เป็นฮาร์ดแวร์ ได้แก่ ฮาร์ดดิสก์, แผ่นดีวีดี, Flash Drive, SD, MMC, CF, MS, และอื่นๆ รวมทั้งอัตราการส่งข้อมูล ความเร็วสัญญาณนาฬิกา จะอ้างอิงขนาดเป็นพหุคูณของสิบ ได้แก่
- KB = 103 = 1,000 bytes
- MB = 106 = 1,000,000 bytes
- GB = 109 = 1,000,000,000 bytes
- แบบ floppy disk เช่น ความจุแผ่น floppy disk แบบ 1.44 MB = 1.44 x 1,000 x 1,024 = 1,474,560 bytes
- แผ่นซีดีรอม เป็นสื่อบันทึกข้อมูลชนิดเดียว ที่ใช้หน่วยเหมือนหน่วยความจำ เช่น ความจุแผ่น CD = 700 MB = 700 x 1,024 x 1,024 = 734,003,200 bytes แต่ในความเป็นจริงจะเป็นค่าประมาณ ค่าจริงๆ จะมากกว่านี้เล็กน้อย นอกจากนี้ ยังขึ้นอยู่กับโหมดการบันทึกด้วย คือการบันทึกข้อมูล จะใช้ sector ละ 2048 ถ้าบันทึกเป็น audio หรือ video cd จะใช้ sector ละ 2336 ทำให้ดูเหมือนบันทึกข้อมูลได้มากกว่าปกติ แต่จริงๆ แล้วการบันทึกข้อมูล ไบต์ที่หายไปจะถูกใช้เป็นข้อมูลสำหรับช่วยแก้ไขข้อผิดพลาด ทำให้ข้อมูลมีความถูกต้องแน่นอนกว่า audio และ video cd
การทดสอบ
เพื่อเป็นการยืนยันว่าการนิยามแบบนี้เป็นไปตามที่กล่าวมา โดยเฉพาะในส่วนของหน่วยเก็บข้อมูล ผมเลยลองโดย
- เอา flashdrive ตัวหนึ่ง ที่บอกว่ามีขนาด 256 MB มาดูบนลินุกซ์พบว่า ขนาดทาง physical = 255,327,744 bytes = 255.3 MB ไม่ถึง 256 MB ด้วยซ้ำ ถ้าวัดขนาดด้วย MB แบบฐานสองแล้ว จะได้ = 255,327,744 / 1024 / 1024 = 243.5 MiB เมื่อฟอร์แมตแล้ว สามารถใช้ได้จริง 255,057,920 bytes
- ยืม CF card จาก mrchoke มีขนาด 128 MB เช็คด้วยลินุกซ์ก็พบว่า ขนาดทาง physical = 128,188,416 bytes = 128.2 MB ถ้าวัดขนาดด้วย MB แบบฐานสอง จะได้ = 122.25 MiB
- ฮาร์ดดิสก์ก็เช่นเดียวกัน และมีการเขียนนิยามของ 1 GB = 1,000,000,000 Bytes ไว้ด้วยบนตัวฮาร์ดดิสก์
ทางออกที่เหมาะสม
การใช้ KB, MB, GB ซึ่งใช้ prefix แบบ SI กับหน่วยความจำนั้นไม่ถูกต้อง เนื่องจากผิดคำนิยาม แต่ก็มีการใช้กันจนชิน เป็นเรื่องปกติ จึงได้มีการกำหนดมาตรฐาน standard IEC prefixes ไว้ โดยถ้าเป็นการวัดหน่วยที่เป็นแบบฐานสอง เช่นการวัดขนาดหน่วยความจำ จะใช้ KiB, MiB, GiB, … แทน KB, MB, GB, … ทำให้การระบุหน่วยวัดมีความชัดเจนขึ้น ถ้ามีการใช้ที่แพร่หลาย ปัญหาความสับสนนี้ก็จะหมดไป บนระบบปฏิบัติการลินุกซ์เองก็เริ่มใช้หน่วยเป็้น KiB, MiB, GiB แล้วนะครับ ลองสังเกตดู



