ศัพท์และมโนทัศน์พื้นฐาน


ระบบเลขฐานสอง

ในบทก่อนได้พูดถึงว่า Leibniz เป็นคนแรกที่คิดจะใช้เลขฐานสองกับเครื่องคำนวณ   อีก ๓๐๐ ปีต่อมาจึงมีผู้นำความคิดนี้มาปฏิบัติ และปัจจุบันนี้เราใช้เลขฐานสองกับคอมพิวเตอร์ ดังนั้นเราต้องมาทำความเข้าใจกันว่าเลขฐานสอง (binary system) คืออะไร

ระบบเลขที่เราใช้อยู่ในชีวิตประจำวันเป็นระบบเลขฐานสิบ กล่าวคือตัวเลขไม่ว่าจะเป็นหลักร้อย พัน หรือล้าน จะมีองค์ประกอบย่อยที่สุดคือ เลข ๐ ถึง ๙  นั่นคือเราใช้เลขสิบตัวนี้เป็นฐานในการสร้างตัวเลขทั้งหมด ระบบเลขฐานสองก็คือระบบที่เราใช้เลขเพียงสองตัวเป็นฐานในการสร้างตัวเลขทั้งหลาย เลขสองตัวนี้คือ ๐ และ ๑   เราอาจจะงงว่าทำได้อย่างไร แต่ถ้าเราเข้าใจว่าเราใช้เลข ๐ ถึง ๙ เป็นฐานสร้างเลขตัวอื่นอย่างไร ก็จะหายงง เพราะถึงมีเพียง ๐ กับ ๑ เราก็ทำวิธีเดียวกัน เมื่อเรานับ ๐ ไปจนถึง ๙ แล้ว เลขจำนวนถัดไปเราก็สร้างได้โดยเอา ๑ กับ ๐ มาผสมกัน แล้วนับไล่ขึ้นไปเป็น ๑๑ และ ๑๒ ตามลำดับ ในทำนองเดียวกัน ถ้าเราใช้เลขฐานสอง เมื่อนับจาก ๐ ถึง ๑ แล้ว เลขจำนวนถ้ดไปก็สร้างได้โดยเอา ๑ กับ ๐ มาผสมกัน แล้วนับไล่ขึ้นไปเป็น ๑๑ ก็หมดอีกหลักหนึ่งเพราะไม่มีเลข ๒ ให้นับ ต้องขึ้นหลักใหม่คือ ๑๐๐ ทำอย่างนี้เรื่อยไป ดูตารางเปรัยบเทียบต่อไปนี้

เลขฐานสิบ เลขฐานสอง
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010

ความจริงแล้วเราจะเลือกใช้เลขฐานเท่าไรก็ได้ แล้วแต่ความสะดวก แต่เหตุที่นักคิดบางคนเสนอให้ใช้เลขฐานสองกับเครื่องคำนวณก็เพราะเป็นระบบที่ใช้ฐานจำนวนน้อยที่สุด ทำให้มีความซับซ้อนน้อยที่สุด (เราใช้ระบบเลขต่ำกว่าฐานสองไม่ได้ ต้องมีอย่างน้อยสองเพื่อใช้ในการผสม) และมีเหตุผลที่สำคัญอีกอย่างหนึ่งที่ทำให้เราใช้เลขฐานสองกับคอมพิวเตอร์ นั่นก็คืออุปกรณ์อิเลคโทรนิคมีอยู่สองสถานะ คือมีไฟฟ้าไหลเข้าหรือไม่มี จึงสะดวกกว่าที่จะใช้เลขฐานสองแทนสองสถานะนี้ นั่นคือเมื่อคอมพิวเตอร์ทำงาน สิ่งที่คอมพิวเตอร์ทำก็คือส่งกระแสไฟเข้าหรือไม่ส่ง เมื่อเราสั่งให้คอมพิวเตอร์ทำงานก็คือกำหนดให้ทำอย่างใดอย่างหนึ่งในสองอย่างนี้ จึงเป็นการง่ายที่จะสื่อสารกับคอมพิวเตอร์โดยให้ ๑ แทนกระแสไฟฟ้าเข้า ให้ ๐ แทนไม่มีกระแสไฟเข้า

แต่เนื่องจากเราไม่ได้ใช้คอมพิวเตอร์แค่คำนวณตัวเลข เราทำเอกสารและเก็บข้อมูลที่เป็นอักขระด้วย เลข ๑ กับ ๐ จึงไม่ได้ใช้แค่แทนตัวเลขเท่านั้น ต้องใช้แทนอักขระและสัญลักษณ์อื่น ๆ ด้วย เช่น เรากำหนดว่า ตัว A แทนด้วยเลขสองตัวนี้ผสมกัน สมมติว่า ๑๐๐๐๐๐๑ เป็นต้น กล่าวอีกนัยหนึ่งภาษาที่คอมพิวเตอร์เข้าใจจะประกอบด้วยเลขสองตัวนี้เท่านั้น

เลข ๐ และ ๑ แต่ละตัวเราเรียกว่า bit ซึ่งย่อมาจาก binary digits ในวงการคอมพิวเตอร์กำหนดให้อักขระต้วหนึ่งหรือสัญลักษณ์อย่างหนึ่งแทนด้วยเลข ๐ และ ๑ ผสมกันแปดตัว หรือ ๘ bits นั่นเองเรียกว่า byte ดังนั้น ๑ byte เท่ากับ ๘ bits เมื่อเรานับจำนวน bytes ไปได้ถึงหลักพัน ก็จะเรียกว่า kilobytes เหมือนกับเมื่อเรานับระยะทางจาก ๑ เมตรไปถึงหลักพัน เราก็เรียกว่ากิโลเมตร แต่ ๑ kilobyte ไม่ใช่ ๑,๐๐๐ bytes แต่เป็น ๑,๐๒๔ bytes ที่เป็นเช่นนี้เพราะเมื่อเรานับ ๑,๐๐๐ เมตรเป็น ๑ กิโลเมตร เรากำลังใช้เลขฐานสิบ ตัวเลข ๑,๐๐๐ ได้มาจากการที่เราเอา ๑๐ มายกกำลัง แต่ถ้าเราเอา ๒ มายกกำลัง จะไม่ได้เลข ๑,๐๐๐ แต่ได้เลข ๑,๐๒๔ (ลองเอา ๒ คูณตัวเองไปเรื่อยๆ จะได้เลข ๑,๐๒๔ ไม่ใช่ ๑,๐๐๐) เมื่อนับ kilobytes ไปได้ถึงหลักพัน ก็จะนับเป็น ๑ megabyte (ซึ่งมีค่าเท่ากับ ๑,๐๒๔ คูณด้วย ๑,๐๒๔ ก็คือ ๑,๐๔๘,๕๗๖) เมื่อนับ megabytes ไปได้ถึงหลักพัน ก็จะนับเป็น ๑ gigabyte ซึ่งมีค่าเท่ากับ ๑,๐๗๓,๗๔๑,๘๒๔ bytes (เป็นผลจากการคูณ ๑,๐๔๘,๕๗๖ ด้วย ๑,๐๒๔) กล่าวอีกนัยหนึ่ง จำนวน ๑ kilobyte เป็นผลจากการเอา ๒ มายกกำลัง ๑๐ จำนวน ๑ megabyte เป็นผลจากการเอา ๒ มายกกำลัง ๒๐ และ ๑ gigabyte เป็นผลจากการเอา ๒ มายกกำลัง ๓๐

หมายเหตุ: mega และ giga แปลว่า ล้าน และ พันล้าน ตามลำดับ ทั้งสองคำเป็นศัพท์ที่มีอยู่แล้วในภาษาอังกฤษ ไม่ใช่ศัพท์เฉพาะทางคอมพิวเตอร์

เมื่อเข้าใจเช่นนี้แล้ว เราก็น่าจะเข้าใจว่า ทำไมคุณลักษณะของอุปกรณ์คอมพิวเตอร์จึงมีเลขแปลก ๆ เช่น มี Level 2 cache จำนวน ๒๕๖ kilobytes หรือมีหน่วยความจำ ๕๑๒ megabytes คำอธิบายก็คือเลขเหล่านี้เกิดจากการเอา ๒ มายกกำลัง

อย่างที่กล่าวข้างต้น การใช้เลขฐานสองกับคอมพิวเตอร์ที่เป็นอิเลคโทรนิคเป็นเรื่องของความสะดวก ไม่ใช่เรื่องของความจำเป็น เราจะใช้เลขฐานสิบกับคอมพิวเตอร์ที่เป็นอิเลคโทรนิคก็ได้ ความจริงแล้วคอมพิวเตอร์อิเลคโทรนิคเครื่องแรกของโลก คือ ENIAC ใช้เลขฐานสิบ มิได้ใช้เลขฐานสองแต่อย่างใด

หน้าต่อไป
กลับไปสารบัญบทเรียน