Big-Endian นั้นเป็นการรูปแบบการเก็บชุดข้อมูลที่มีนัยสำคัญมากไว้ ก่อนชุดที่มีนัยสำคัญน้อย
Little-Endian นั้นเป็นการรูปแบบการเก็บชุดข้อมูลที่มีนัยสำคัญน้อยไว้ ก่อนชุดที่มีนัยสำคัญมาก
สรุปจาก http://widebase.net/
แล้วอะไรคือนัยสำคัญ?? แล้วแบบไหนมีนัยสำคัญมากแบบไหนมีน้อย??
เริ่มจากนัยสำคัญ ของตัวเลขซึ่งเรามักได้ยินกันว่ามีเลขนัยสำคัญเป็น 2 ตัวบ้าง 3ตัวบ้าง (ไม่ใช่หวยนะครับ)
มันต่างกันอย่างไรและให้อะไรกับเรา ซึ่งวิธีการมันนั้นซับซ้อนพอสมควร ไม่ขอกล่าวก็แล้วกัน
แต่จะยกตัวอย่างเอานะครับ
456 มีเลขนัยสำคัญ 3 ตัว
3.5 มีเลขนัยสำคัญ 2 ตัว
1005 มีเลขนัยสำคัญ 4 ตัว
1.01 มีเลขนัยสำคัญ 3 ตัว
0.02 มีเลขนัยสำคัญ 1 ตัว
0.0026 มีเลขนัยสำคัญ 2 ตัว
ซึ่งเราจะเห็นว่ายิ่งมีนัยสำคัญมาก ก็ตัวเลขนั้นก็จะมีความหมายมากขึ้น ตามไปด้วย(งง เข้าไปใหญ่เลยใช่ไหมครับ)
โดยที่ผมบอกว่ามีความหมายมากขึ้น นั้นคืออย่างในตัวอย่าง 0.02 มีความหมายน้อยกว่า 0.0026 เพราะว่าเราสนใจ 0.0026มากกว่าถ้านำมาเทียบกัน เรามักสนใจเลขที่มันเยอะ ละเอียดกว่าเสมอ
ถ้าเข้าใจแล้วก็จะรู้ว่า เราสนใจเลขที่มีนัยสำคัญมาก มากกว่า เลขที่มีนัยสำคัญน้อย
สรุปว่านัยสำคัญคือความหมายของเลข แล้วจะดูว่านัยสำคัญมากน้อยก็ดูว่าสนใจอะไรมากกว่า
จากเรื่องนัยสำคัญของคนเรา คราวนี้ก็มาถึงนัยสำคัญคอมพิวเตอร์ซึ่งเป็นที่มาของ Big-Endian, Little-Endian
เพราะว่าคอมพิวเตอร์นั้นเก็บตัวเลขหนึ่งๆได้หลายรูปแบบทั้ง Bit(ไม่ค่อยทำเท่าไร), Byte, Half-word และ Word ดังนั้นเลขหนึ่งตัวเช่น 203 หรือ 0x00CB ในเลขฐาน16
สำหรับ Processor ที่ทำงานที่ 32 บิต จึงเติม0เพิ่มข้างหน้าอีก (32-bit = 1 word = 4 byte) และหากมีการเก็บแบบ Byte จะต้องมีตำแแหน่งที่เก็บ 0,0,C และ B แยกออกจากกัน4ที่ แล้วจะเก็บอะไรก่อนหลัง???
นั้นจึงได้มีการนำเอานัยสำคัญเข้ามาพิจารณาจนเกิดเป็น2กลุ่มคือBig-Endian, Little-Endian
เราจะเห็นความแตกต่างของนัยสำคัญของคอมพิวเตอร์กับนัยสำคัญที่คนเข้าใจ
ว่านัยสำคัญที่กล่าวถึงสำหรับ Big-Endian, Little-Endian นั้นเทียบกันภายในเลขหนึ่งตัวเช่น 0,0,CและB
แต่ว่าหลักการพิจารณานั้นยังคงคล้ายกันเพียงแต่พิจารณาคนละแง ่เช่น 203 ตามตัวอย่างนั้นจะสามารถแบ่งออกเป็นสองชุดตามเลขฐาน 10 คือ 2x10^2 (MSB - most significant bit)
กับ 3x10^0 (LSB - Least sidnificant bit)
หากมีเลขตัวชุดหนึ่งหายไป ลองคิดดูว่าจะเกิดอะไรขึ้น
ถ้า 200 หายไปจาก 203 กลายเป็น 3 ซึ่งมันต่างกันมาก แต่ถ้า 3 หายก็จะกลายเป็น 200 ซึ่งก็พอรับได้
จากตัวอย่างนั้นชุด 200 นั้นมีความหมายมากกว่าชุด 3 จึงทำให้ 200 มีนัยสำคัญมากกว่า 3 นั้นเอง
ทางผู้ที่ออกแบบจึงหาวิธีที่ช่วย ทำให้คอมพิวเตอร์สามารถทำงานได้ถูกต้องด้วยข้อมูลที่ถูกต้อง หรือใกล้เคียงใหม่มากที่สุด กลุ่มหนึ่ง(Motolora ซึ่งทำ Processor ให้ Mac)บอกว่า ควรเก็บเลขที่มีนัยสำคัญมาก(200)ไว้ก่อน ซึ่งก็คือ Big-Endian
Byte3 Byte2 Byte1 Byte0 จะเก็บเป็น
Base Address +0 Byte3
Base Address +1 Byte2
Base Address +2 Byte1
Base Address +3 Byte0
แต่สำหรับกลุ่ม(นำโดยIntel ครับ เช่นตระกูล i386)เอาเลขที่มีนัยสำคัญน้อย(3) เก็บไว้ก่อนจึงเกิด Little-Endian
Base Address +0 Byte0
Base Address +1 Byte1
Base Address +2 Byte2
Base Address +3 Byte3
ไม่มีความคิดเห็น:
แสดงความคิดเห็น