ระบบจำนวน (Number System)-คอมพิวเตอร์และระบบสารสนเทศ
ระบบจำนวน (Number System) ความหมายของเลขฐาน
เลขฐาน หมายถึง กลุ่มข้อมูลที่มีจำนวนหลัก (Digit) ตามชื่อของฐานนั้นๆเช่น เลขฐานสอง ฐานแปด และฐานสิบ ประกอบด้วยข้อมูลตัวเลขจำนวนสองหลัก (0-1) แปดหลัก (0-7) และสิบหลัก (0-9) ตามลำดับ ดังตัวอย่าง
เลขโดด 10 ตัว ที่เขียนเป็นตัวเลขฮินดูอารบิกได้แก่ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 และ 9
ระบบจำนวน (Number system)
วิธีการหนึ่งของการนำจำนวนมาใช้ก็คือระบบจำนวนฐานสิบ มีเลขโดด 10 ตัว (0,1,2,3,4,5,6,7,8,9) ซึ่งสามารถนำมาจัดจำนวนที่มีค่ามาก ระบบจำนวนฐานสิบได้นำมาใช้มากในปัจจุบันที่เป็นเช่นนี้เพราะพัฒนามาจากการที่มนุษย์ใช้นิ้วมือสิบนิ้วและนิ้วเท้าสิบนิ้วในการนับ
จำนวนเต็ม (Integers : I)
ได้แก่ จำนวนเต็มบวก จำนวนเต็มลบ และศูนย์ เช่น -11 , -4 , 0 , 3 , 8 , 102
**** จำนวนเต็มไม่รวมเศษส่วน ทศนิยม หรือจำนวนคละ ****
จำนวนธรรมชาติ หรือจำนวนนับ (Natural or Counting numbers : N)
จำนวนเต็มบวกที่เราใช้สำหรับการนับ ได้แก่ 1 , 2 , 3 , 4 , …
จำนวนถัดไป (Consecutive numbers)
จำนวนซึ่งอยู่ถัดไปของจำนวนอื่นแต่ละจำนวน เช่น 4 , 5 , 6 , 7 , 8 , …
ค่าประจำหลัก (Place value)
ค่าของเลขโดดที่สัมพันธ์กับตำแหน่งของค่าประจำหลัก ตัวอย่างเช่น 12 , 205 , 2600 ทุกจำนวนมีเลขโดด 2 แต่ค่าประจำหลักของ 2 แตกต่างกัน
จำนวน 12 2 มีค่า สอง
205 2 มีค่า สองร้อย
2600 2 มีค่า สองพัน
ในระบบคอมพิวเตอร์มีการใช้ระบบเลขฐาน 4 แบบ ประกอบด้วย
1. เลขฐานสอง (Binary Number)
2. เลขฐานแปด (Octal Number)
3. เลขฐานสิบ (Decimal Number)
4. เลขฐานสิบหก (Hexadecimal Number)
ระบบเลขฐาน
1. เลขฐานสอง (Binary Number System) คือ ตัวเลขที่มีค่าไม่ซ้ำกันสองหลัก (0 และ 1) เป็นเลขฐานเดียวที่เข้ากันได้กับ Hardware ของเครื่องคอมพิวเตอร์ได้โดยตรง เพราะการใช้เลขฐานอื่น จะสร้างความยุ่งยากให้กับเครื่องคอมพิวเตอร์อย่างมาก เช่น เลขฐานสิบมีตัวเลขที่เป็นสถานะที่ต่างกันถึง 10 ตัว ในขณะที่ระบบไฟฟ้ามีเพียง 2 สถานะ ซึ่งในช่วงเวลาหนึ่งๆมีเพียงสถานะเดียวเท่านั้น แต่ละหลักของเลขฐานสอง เรียกว่า Binary Digit (BIT)
2. เลขฐานแปด (Octal Number System) ได้แก่ 0,1,2,…,7 มีความสัมพันธ์กับเลขฐานสอง คือ เลขฐานสองจำนวน 3 หลัก แทนด้วยเลขฐานแปด 1 หลัก ดังนั้นเราจึงสามารถเขียนเลขฐานสอง 6 บิท แทนด้วยเลขฐานแปด 2 บิท การใช้เลขฐานแปดแทนเลขฐานสองทำให้จำนวนบิทสั้นลง
3. เลขฐานสิบ (Digit Number System) คือ ตัวเลขที่มีค่าไม่ซ้ำกันสิบหลัก (0,1,2,…,9) เป็นเลขฐานที่มนุษย์คุ้นเคยและใช้ในชีวิตประจำวันมากที่สุด ตัวเลขที่มีจำนวนมากกว่า 9 ให้ใช้ 10 ซึ่งเป็นการกลับไปใช้เลข 1 และ 0 อีก เพียงแต่ค่าของ 1 เปลี่ยนไปเป็น 10 เท่าของตัวมันเอง เช่น 333 (สามร้อยสามสิบสาม) แม้จะใช้ตัวเลข 3 ทั้งหมด แต่ตำแหน่งของตัวเลขย่อมมีความหมายตามตำแหน่งของแต่ละหลักนั้น กล่าวคือ หลักหน่วยน้อยกว่าหลักสิบ 10 เท่า หลักสิบน้อยกว่าหลักร้อย 10 เท่า ตามลำดับ
4. เลขฐานสิบหก (Hexadecimal Number System) ได้แก่ 0,1,2,..,9, A(10),B(11),C(12),D(13),E(14),F(15) มีความสัมพันธ์กับเลขฐานสอง คือ เลขฐานสองจำนวน 4 หลัก แทนด้วยเลขฐานสิบหก 1 หลัก ดังนั้นเราจึงสามารถเขียนเลขฐานสอง 8 บิทแทนด้วยเลขฐานสิบหก 2 บิท การใช้เลขฐานสิบหกแทนเลขฐานสองทำให้จำนวนบิทสั้นลง
การเปลี่ยนเลขฐานสอง เป็นเลขฐานสิบ
ให้นำค่าคงที่เฉพาะที่ตรงกับเลข 1 ของฐานสองมารวมกัน เช่นจำนวน (11010)2 ประกอบด้วยเลข “1” จำนวน 3 ตัว
เมื่อนำค่าคงที่เฉพาะที่ตรงกับเลข 1 มารวมกัน ทำให้ได้จำนวนในฐานสิบเป็น 16+8+2 = 26 ดังนี้
นอกจากนี้การเปลี่ยนเลขฐานสองให้เป็นเลขฐานสิบยังสามารถทำได้โดย นำตัวเลขในแต่ละตำแหน่งคูณด้วยค่าประจำตำแหน่งแล้วนำมารวมกัน ค่าประจำตำแหน่งของเลขฐานสองเริ่มตั้งแต่ 20,21,22,… ตัวอย่างเช่น
(1011)2 = (1×23)+(0x22)+(1×21)+(1×20)
= (1×8)+(0x4)+(1×2)+(1×1)
= 8+0+2+1
= 11
การเปลี่ยนเลขฐานสิบ เป็นเลขฐานสอง
ให้พิจารณานำค่าคงที่เฉพาะหลักใดๆมารวมกัน เพื่อให้ได้ค่าเท่ากับเลขฐานสิบที่กำหนด จากนั้นเติมเลข “1“ ณ ตำแหน่งที่นำตัวเลขมารวมนั้น เช่น (26)10จะต้องใช้ค่าคงที่เฉพาะรวมกัน 3 หลัก (16+8+2) ดังนั้นจึงเติม “1” ณ ตำแหน่ง 16,8 และ 2 ตามลำดับ ส่วนตำแหน่งที่เหลือให้เติม “0”
นอกจากนี้ยังสามารถเปลี่ยนค่าจากเลขฐานสิบให้เป็นฐานสอง โดยการหารเลขฐานสิบด้วยสองไปเรื่อยๆจะได้เศษจากการหาร คือ เลขฐานสอง ที่ต้องการ ตำแหน่งของเศษที่เกิดจากการหารก็คือกำลังของเลขฐานสอง นั่นคือเศษที่ได้จากการหารครั้งแรกจะคูณด้วย 20 เศษที่ได้จากการหารด้วย 2 ครั้งที่ 2 จะคูณด้วย 2 1เป็นต้น ตัวอย่างเช่น
การเปลี่ยนระหว่างเลขฐานอื่น
การเปลี่ยนระหว่างเลขฐานอื่น (ระหว่างฐานสอง ฐานแปด ฐานสิบ และฐานสิบหก)
ในที่นี้จะได้อธิบายถึงการเปลี่ยนฐานเลข ระหว่างเลขฐานสอง ฐานแปด ฐานสิบ และฐานสิบหก ซึ่งใช้ในระบบคอมพิวเตอร์ทั่วไป โดยมีหลักการเบื้องต้น 3 ประการ ดังนี้
(a) เปลี่ยนเลขฐานจากโจทย์ ไปสู่เลขฐานสองก่อน (ใช้เลขฐานสองเป็นตัวเชื่อมไปสู่เลข ฐานอื่น)
(b) เลขฐานแปด 1 หลัก ประกอบด้วยเลขฐานสอง 3 หลักคือ (111) 2
= 1 | 1 | 1
(เนื่องจากเลขฐานแปด ต้องมีค่าไม่เกิน 7)
(c) เลขฐานสิบหก 1 หลัก ประกอบด้วยเลขฐานสอง 4 หลักคือ (1111)2
= 1 | 1 | 1 | 1
(เนื่องจากเลขฐานสิบหก ต้องมีค่าไม่เกิน 15)
ตัวอย่างที่ 1 (75) 8 = (?)10
– ใช้หลักการ (a) เปลี่ยนเลขฐานแปด เป็นเลขฐานสอง ดังนี้
– แยก (75) 8 ออกเป็น 2 กลุ่มๆละ 3 หลัก ตามหลักการข้อ (b) โดยแยก 7 และ 5 ออกจากกัน ดังนี้
– เปลี่ยนเลขฐานสองที่ได้ เป็นเลขฐานสิบดังนี้ (111101)2 = (?)10
(111101) 2 = (32+16+8+4+1) 10 = (61) 10
(75)8 = (61) 10
การแปลงเลขเศษส่วนในระบบเลขฐานสิบเป็นฐานสอง
การแปลงจำนวนเต็มใช้หลักการหารด้วย 2 (หรือการหาผลบวกของค่าประจำหลักก็ได้) สำหรับการแปลงเศษส่วนใช้วิธีการคูณด้วย 2 (คูณในระบบฐานสิบ) เพื่อหาค่าที่เป็นจำนวนเต็มหรือตัวทด (ตรงกันข้ามกับการแปลงจำนวนเต็มซึ่งใช้การหารและหาเศษที่เหลือ) ค่าตัวทดที่เกิดขึ้นในการคูณแต่ละครั้งให้เก็บไว้เป็นผลลัพธ์ นำส่วนที่เป็นเศษส่วนมาทำการคูณด้วยสองต่อไป จนได้ตัวเลขครบตามจำนวนที่ต้องการ ผู้ศึกษาจงสังเกตด้วยว่าการแปลงเลขเศษส่วนไปสู่ระบบฐานสองบางจำนวนไม่อาจแทนได้อย่างถูกต้อง ปรากฎการณ์นี้เป็นที่มาแห่งความผิดพลาดและคลาดเคลื่อนในการคำนวณเลขในระบบเครื่องคอมพิวเตอร์
ตัวอย่าง
จงแปลงจำนวน 159.356 ให้เป็นจำนวนในระบบเลขฐานสอง กำหนดผลลัพธ์ไม่เกิน 8 หลัก
– จำนวนที่กำหนดให้มีสองส่วนคือ ส่วนที่เป็นจำนวนเต็มได้แก่ 159แปลงเป็นจำนวนในระบบฐานสองได้ 159 = (10100001)2
– เศษส่วนคือ .356 ทำการแปลงไปสู่ระบบเลขฐานสองด้วยการคูณด้วย 2 เก็บผลลัพธ์จากตัวแรกไปยังตัวสุดท้าย ดังนี้
ผลลัพธ์คือ ตัวทดที่ได้จากการคูณตามลำดับตั้งแต่ครั้งที่ 1 ไปจนถึงครั้งสุดท้าย (ตามลูกศร) โดยให้เขียนจุดแสดงเศษข้างหน้า
159.356 ป (10100001.01011) 2
ตัวอย่างนี้ แสดงเศษส่วนไว้เพียง 5 ตำแหน่ง ให้สังเกตว่าค่า ( .01011) 2 ไม่เรียกว่าเป็นค่าหลังจุดทศนิยม เพราะว่าจุดทศนิยมใช้สำหรับจำนวนในระบบเลขฐานสิบเท่านั้น เศษในระบบฐานสองข้างต้นนี้มีค่าไม่เท่ากับ .356 แต่เป็นเพียงค่าประมาณ(ที่น้อยกว่า)เท่านั้น
การแปลงจำนวนจากฐานหนึ่งไปยังอีกฐานหนึ่งเป็นต้นเหตุสำคัญของการเกิดค่าคลาดเคลื่อน (error) ในการคำนวณต่างๆซึ่งเป็นสิ่งที่ต้องระมัดระวังมาก
การแปลงเศษส่วนในระบบฐานสองเป็นฐานสิบ
ตัวอย่าง
จงแปลงจำนวน (0.01011) 2 ให้เป็นจำนวนในระบบฐานสิบ
\ 0.01011 มีค่าเท่ากับ
0x0.5 +1×0.25 +0x0.125 +1×0.0625 +1×0.03125
= 0.34375
การแปลงเศษส่วนในระบบฐานสิบเป็นฐานแปดและฐานสิบหก
ให้คูณเศษส่วนด้วยค่าของฐาน เก็บจำนวนเต็มหรือตัวทดที่เกิดขึ้นไว้เป็นผลลัพธ์ นำส่วนที่เหลือด้วยค่าของฐานต่อไป
ตัวอย่างที่ 1
แปลงจำนวน 0.356 ให้เป็นจำนวนในระบบฐานแปดและฐานสิบหก
– ก.แปลง 0.356 ให้เป็นจำนวนในระบบฐานแปด ให้คูณด้วย 8 เก็บตัวทด
– ข.แปลง 0.356 เป็นจำนวนในระบบฐานสิบหก ให้คูณด้วย 16
การแปลงเลขเศษส่วนระบบฐานสิบให้เป็นฐานแปดหรือฐานสิบหก อาจทำให้เป็นเศษส่วนในระบบฐานสองก่อน แล้วให้การจับกลุ่มตัวเลขในระบบฐานสองเป็นกลุ่มละ 3 ตัว หรือกลุ่มละ 4 ตัว แล้วเปลี่ยนค่าเลขฐานสองแต่ละกลุ่มที่ได้เป็นเลขในระบบฐานแปดหรือฐานสิบหกตามต้องการ
การแปลงเศษส่วนในฐานแปดและฐานสิบหกเป็นฐานสิบ
ให้ทำการบวกค่าประจำหลักของแต่ละระบบฐานจำนวนเทียบกับระบบฐานสิบเข้าด้วยกัน
ตัวอย่างที่ 1
จงแปลงจำนวน (0.26621) 8 ให้เป็นจำนวนในระบบฐานสิบ
– ค่าประจำหลักของจำนวนในแต่ละหลักมีดังนี้
(0.26621) 8 = (2×1/8)+(6×1/64)+(6×1/512)+(2×1/4096)+(1×1/32768)
= 0.25+0.09375+0.011718+0.000488+0.0000305
= 0.3559865 ป 0.356
ตัวอย่างที่ 2
จงแปลงจำนวน (0.5B22) 16 ให้เป็นจำนวนในระบบฐานสิบ
– ค่าประจำหลักของจำนวนในแต่ละหลัก
(0.5B22) 16 = (5×1/16)+(Bx1/256)+(2×1/4096)+(2×1/65536)
= (5×0.0625)+(11×0.00390625)+(2×0.00024414)+(2×0.0000152587)
= 0.3559875 ป 0.356