Data Types Deep Dive เจาะลึกชนิดข้อมูลในงานโปรแกรมมิ่ง
ทำความเข้าใจประเภทข้อมูลเชิงลึกในระบบคอมพิวเตอร์ ทั้งหน่วยความจำ เลขฐานสอง การจัดการตัวเลข และข้อผิดพลาดจาก Overflow

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ชนิดข้อมูลทำหน้าที่ตีความกลุ่มบิตในคอมพิวเตอร์ให้มีความหมาย
- ภาษา Java มี 8 พริมิทีฟทัยป์ พร้อมระบบตรวจสอบตั้งแต่เวลาคอมไพล์
- ปัญหา Integer Overflow เกิดขึ้นเมื่อค่าตัวเลขเกินขอบเขต 32 บิต
- การคำนวณทศนิยมแบบ Floating-point อาจมีความคลาดเคลื่อนเล็กน้อย
การประกาศตัวแปรอย่างเช่นคำสั่ง int age = 20 ในการเขียนโปรแกรม อาจดูเหมือนเป็นการเก็บเลขจำนวนเต็มยี่สิบไว้เฉยๆ แต่แท้จริงแล้วเบื้องหลังกระบวนการเหล่านี้มีความซับซ้อนมากกว่านั้น การศึกษาเรื่องชนิดข้อมูลในระดับลึกจะช่วยให้เข้าใจเรื่องหน่วยความจำ การแทนค่าด้วยเลขฐานสอง การล้นของข้อมูล ประสิทธิภาพ และการทำงานระดับเครื่อง
คอมพิวเตอร์ในระดับล่างสุดทำงานกับบิตที่เป็นเลขศูนย์กับเลขหนึ่ง แต่บิตเหล่านี้ไม่มีความหมายในตัวเองจนกว่าชนิดข้อมูลจะเข้ามาทำหน้าที่ตีความ เช่น ค่า 01000001 อาจหมายถึงเลข 65 หรือตัวอักษร A ภายใต้รหัส ASCII ชนิดข้อมูลจึงเปรียบเสมือนกล่องใส่ของที่ถูกออกแบบมาต่างกัน เพื่อบอกคอมไพล์เดอร์ว่าข้อมูลนี้คืออะไรและอนุญาตให้ทำปฏิบัติการใดบ้าง เช่น ตัวเลขสามารถนำไปบวกเพิ่มได้ แต่ไม่สามารถเรียกใช้ฟังก์ชันจัดการข้อความอย่าง toUpperCase ได้

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
การเข้าใจว่าภาษาโปรแกรมแปลงโค้ดระดับสูงไปสู่ระดับเครื่องอย่างไรผ่านชนิดข้อมูล ช่วยให้โปรแกรมเมอร์หลีกเลี่ยงข้อผิดพลาดด้านประสิทธิภาพและการใช้หน่วยความจำเกินความจำเป็น ซึ่งเป็นรากฐานสำคัญของการพัฒนาซอฟต์แวร์ที่มีเสถียรภาพ
ภาษาจาวามีประเภทข้อมูลพื้นฐาน 8 ชนิด โดยประเภทข้อมูลแบบจำนวนเต็ม signed 32-bit integer อย่าง int จะมีรูปแบบบิตที่เป็นไปได้ถึงสองยกกำลังสามสิบสอง และมีช่วงค่าตั้งแต่ลบสองพันหนึ่งร้อยสี่สียล้านเจ็ดแสนสี่หมื่นแปดพันหกร้อยสี่สิบแปด ถึงสองพันหนึ่งร้อยสี่สียล้านเจ็ดแสนสี่หมื่นแปดพันหกร้อยสี่สิบเจ็ด หากค่าตัวเลขเกินขอบเขตนี้จะเกิดภาวะ Integer Overflow ทำให้ค่าวนกลับไปเริ่มต้นที่ค่าต่ำสุด ซึ่งเป็นแหล่งที่มาของบั๊กในโปรแกรม
สำหรับการจัดการกับเลขทศนิยม คอมพิวเตอร์มักใช้รูปแบบ Floating-point ตามมาตรฐาน IEEE 754 โดยใช้ 32 บิตสำหรับ float และ 64 บิตสำหรับ double ซึ่งทำให้เก็บค่าที่มีช่วงกว้างมากได้ แต่ทศนิยมเหล่านี้ไม่ใช่ค่าที่แท้จริงของทุกทศนิยม ตัวอย่างเช่นผลบวกของ 0.1 กับ 0.2 อาจให้ผลลัพธ์เป็น 0.30000000000000004 เนื่องจากคอมพิวเตอร์เก็บค่าที่ใกล้เคียงที่สุดในรูปแบบฐานสอง ซอฟต์แวร์การเงินจึงมักเลือกใช้ BigDecimal แทน
ในส่วนของตัวอักษรและตรรกะ ตัวอักษรอย่าง char ในจาวามีขนาด 16 บิตในรูปแบบหน่วยรหัส UTF-16 ซึ่งตัวอักษรยูนิโค้ดบางตัวอาจต้องใช้ char สองค่าคู่กัน ขณะที่ค่าความจริง boolean มีสองค่าคือ true และ false โดยภาษาโปรแกรมสมัยใหม่อย่าง Java, C, C++, Rust และ Go จะมีการตรวจสอบประเภทข้อมูลเป็นหลักในช่วงเวลาการคอมไพล์
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น