จำนวนผู้เข้าชม

วันอังคารที่ 12 ตุลาคม พ.ศ. 2553

ข้อมูลในคอมพิวเตอร์

ข้อมูลในคอมพิวเตอร์

คอมพิวเตอร์ทำงานด้วยหลักการทางอิเล็กทรอนิกส์ที่ใช้สัญญาณทางไฟฟ้าแทนตัวเลขศูนย์และหนึ่ง ซึ่งเป็นตัวเลขในระบบเลขฐานสอง แต่ละหลักเรียกว่า “บิต” (Binary Digit) : Bit) และเมื่อนำตัวเลขหลาย ๆ บิตมาเรียงกัน จะใช้สร้างรหัสแทนจำนวน อักขระ สัญลักษณ์ ทั้งภาษาไทยและภาษาอังกฤษได้ และเพื่อให้การแลกเปลี่ยนข้อความระหว่างมนุษย์กับคอมพิวเตอร์เป็นไปในแนวเดียวกัน จึงมีการกำหนดมาตรฐานรหัสแทนข้อมูลในระบบเลขฐานสองขึ้น โดยรหัสมาตรฐานที่นิยมใช้กันมากมีสองกลุ่ม คือ รหัสแอสกีและรหัสเอบซีดิก 
2.3.1  ระบบเลขฐานสอง
ในชีวิตประจำวันของมนุษย์ต้องได้พบเจอกับจำนวนและการคำนวณอยู่ทุกวัน หากเราสังเกตจะพบว่าจำนวนที่เราคุ้นเคยอยู่ทุกวันนั้น ไม่ว่าจะเป็นการซื้อของเป็นเงิน 39,587 บาท จำนวนเงินฝากในธนาคาร 1,426,000 บาท หรือ จำนวนเงินในใบแจ้งหนี้ค่าโทรศัพท์เป็น 2,560 บาท  ล้วนแล้วแต่ประกอบขึ้นจากตัวเลข 10 ตัว คือ 0, 1, 2, 3, 4, 5, 6, 7, 8 และ 9 ทั้งสิ้น ตัวเขทั้ง 10 ตัวนี้ถือได้ว่าเป็นเครื่องมือที่ช่วยในการนับจำนวนของมนุษย์ การที่มนุษย์เลือกเลข 10 ตัวในการแทนการนับ อาจเนื่องจากมนุษย์มีนิ้วมือที่สามารถใช้เป็นอุปกรณ์ช่วยนับได้เพียง 10 นิ้ว จึงกำหนดระบบตัวเลขนี้ขึ้นมาและเรียกว่า “ระบบเลขฐานสิบ” (Decimal) 
ต่อมาเมื่อมีการใช้งานคอมพิวเตอร์ ซึ่งเป็นอุปกรณ์อิเล็กทรอนิกส์ที่ทำงานแบบดิจิตอล และใช้ระดับแรงดันไฟฟ้าแสดงสถานะเพียง 2สถานะ คือ ปิด (แทนด้วย 0) และเปิด (แทนด้วย 1) หรืออาจกล่าวได้ว่าเครื่องคอมพิวเตอร์รู้จักตัวเลขเพียง 2 ตัวเท่านั้น คือ 0 และ 1 หากมนุษย์ต้องการใช้คอมพิวเตอร์เป็นเครื่องมือช่วยทำงาน มนุษย์ต้องเรียนรู้ระบบเลขที่ประกอบด้วยตัวเลขเพียง 2 ตัวเช่นกัน จึงได้มีการคิดค้นระบบเลขฐานสอง (Binary) ขึ้นเพื่อช่วยในการสื่อสารกับเครื่องคอมพิวเตอร์ โดยระบบเลขฐานสองเป็นระบบตัวเลขที่ประกอบด้วยตัวเลขเพียง 2 ตัว คือ 0 และ 1 เท่านั้น ตัวอย่างเลขฐานสอง เช่น 1102  101102 
นอกจากระบบเลขฐานสองแล้ว ในการทำงานของคอมพิวเตอร์นั้นยังอาจเกี่ยวข้องกับระบบตัวเลขระบบอื่นอีก เช่น ระบบเลขฐานแปดและระบบเลขฐานสิบหก ซึ่งระบบเลขฐานทั้งสองจะมีแนวคิดในทำนองเดียวกันกับระบบเลขฐานสองและฐานสิบ กล่าวคือ ระบบเลขฐานแปดก็คือระบบเลขที่ประกอบด้วยตัวเลขเพียง 8 ตัว คือ 0, 1, 2, 3, 4, 5, 6 และ 7 ตัวอย่างเลขฐานแปด เช่น 16738  765138 ในขณะที่ระบบเลขฐานสิบหกนั้นจะประกอบด้วยตัวเลขทั้ง 10 ตัวที่ใช้อยู่ในระบบเลขฐานสิบ และเพิ่มตัวอักขระภาษาอังกฤษ A, B, C, D, E และ F แทนจำนวน 10, 11, 12, 13, 14 และ 15 ตามลำดับ ตัวอย่างเลขฐานสิบหก เช่น A154916 F7DA216 874316 
จากที่กล่าวมาข้างต้นจะเห็นว่าการเขียนเลขฐานสอง ฐานแปด และฐานสิบหกนั้น มักจะเขียนตัวเลข 2 8 และ 16 กำกับอยู่ที่ตัวสุดท้าย ทั้งนี้เพื่อป้องกันความสับสน เช่น 8743 หากเราไม่เขียนตัวเลขกำกับไว้ ตัวเลขนี้อาจเป็นเลขฐานสิบหรือฐานสิบหกก็ได้ เราก็จะไม่ทราบว่าตัวเลขที่เขียนนั้นเป็นเลขฐานใด ตารางด้านล่างนี้เป็นตารางแสดงค่าของตัวเลขในระบบเลขฐานทั้ง 4 ระบบที่กล่าวถึงข้างต้น 
ที่มา http://www.utcbanyat.com/Web%20_Digital/Data/Binary1_clip_image001.gif 
ตารางที่ 2.1 ตารางแสดงรูปแบบของเลขในฐานสอง ฐานสิบ ฐานแปด และฐานสิบหก 
ดังที่กล่าวแล้วว่ามนุษย์ต้องอาศัยระบบเลขฐานสองในการสื่อสารกับเครื่องคอมพิวเตอร์ ไม่ว่าจะเป็นการเก็บข้อมูลหรือการสั่งงานเครื่องคอมพิวเตอร์ ดังนั้นเราต้องสามารถแปลงค่าเลขฐานสิบให้อยู่ในรูปแบบของเลขฐานสองได้ ในขณะเดียวกันก็ต้องสามารถแปลงเลขฐานสองให้อยู่ในรูปแบบของเลขฐานสิบได้เช่นกัน ในบทนี้จะกล่าวถึงวิธีการในการแปลงเลขระหว่างเลขฐานสองและฐานสิบ 
(1)  การแปลงเลขฐานสิบเป็นฐานสอง
คำศัพท์ที่จำเป็นต้องทำความรู้จักเพื่อให้เข้าใจตรงกันในการดำเนินการต่าง ๆ ในระบบเลขฐานสอง มีดังนี้
ก)  บิต (Bit)  คือ หลักแต่ละหลักในระบบเลขฐานสอง เช่น 1102 ประกอบด้วย 3 บิต
ข)  บิตที่มีนัยสำคัญสูงสุด (Most Significant Bit : MSB)  คือ บิตที่อยู่ซ้ายมือสุด เป็นบิตที่มีค่าประจำหลักมากที่สุด เช่น 1002 บิตที่มีนัยสำคัญสูงสุดคือ 1 มีค่าประจำหลักเป็น 22
ค) บิตที่มีนัยสำคัญต่ำสุด (Least Significant Bit : LSB) คือ บิตที่อยู่ขวามือสุด เป็นบิตที่มีค่าประจำหลักน้อยที่สุด เช่น 1102 บิตที่มีนัยสำคัญสูงสุดคือ 0 มีค่าประจำหลักเป็น 20 (สังเกตว่าค่าประจำหลักของบิตที่มีนัยสำคัญต่ำสุดจะมีค่าเป็น 20 เสมอ)
การแปลงเลขฐานสิบให้เป็นฐานสองนั้น เราอาจใช้วิธีการหาร โดยให้ตัวเลขฐานสิบเป็นตัวตั้ง แล้วหารด้วยเลข 2 ไปเรื่อย ๆ จนกระทั่งผลหารเป็น 0 และในการหารแต่ละครั้ง ต้องเขียนเศษที่ได้จากการหารไว้ หลังจากที่หารจนผลหารเป็น 0 เราจะได้เลขฐานสองที่มีค่าเท่ากับเลขฐานสิบที่เป็นตัวตั้ง โดยการเขียนเศษที่ได้จากการหารแต่ละครั้งจากล่างขึ้นบน ดังตัวอย่างต่อไปนี้ 
 
ตัวอย่างที่ 2.1 แสดงการแปลง 19 ซึ่งเป็นเลขฐานสิบให้อยู่ในรูปเลขฐานสอง 
 
ตัวอย่างที่ 2.2 แสดงการแปลง 29 ซึ่งเป็นเลขฐานสิบให้อยู่ในรูปเลขฐานสอง 
(2)  การแปลงเลขฐานสองเป็นฐานสิบ
การแปลงเลขฐานสองกลับเป็นเลขฐานสิบต้องอาศัยค่าประจำหลักของแต่ละบิตในเลขฐานสองที่ต้องการแปลง โดยเราจะแยกตัวเลขแต่ละบิตมาคูณด้วยค่าประจำหลัก แล้วนำผลลัพธ์จากการคูณดังกล่าวมารวมกัน จะได้เลขฐานสิบที่มีค่าตรงกับเลขฐานสอง ดังตัวอย่าง 
 
 
(3)  การบวกเลขฐานสอง
การบวกเลขฐานสองมีหลักการเหมือนกับการบวกเลขฐานสิบที่เราคุ้นเคย เพียงแต่ตัวเลขในแต่ละหลักของเลขฐานสองจะมีค่ามากที่สุดคือ 1 นั้นหมายความว่าในหลักใด ๆ ที่มี 1 บวกกับ 1 จะได้ผลลัพธ์เป็น 0 และทดค่า 1 ไว้ในหลักถัดไปทางซ้าย ดังตัวอย่าง 
 
ตัวอย่างที่ 2.5 แสดงการหาค่า 10011 + 1010 
 
ตัวอย่างที่ 2.6 แสดงการหาค่า 1001 + 1111 
(4)  การลบเลขฐานสอง
การลบเลขฐานสองก็เช่นเดียวกับการลบเลขฐานสิบ คือพิจารณาเอาเลขที่เป็นตัวตั้งลบด้วยตัวลบทีละหลัก หากตัวตั้งเป็น 1 ตัวลบเป็น 0 ผลลัพธ์ได้เป็น 1 แต่ถ้าตัวตั้งเป็น 0 และตัวลบเป็น 1 ต้องมีการดึงค่าในหลักที่อยู่ทางซ้ายมาได้ผลลัพธ์เป็น 1 และมีผลให้ค่าของหลักที่ถูกดึงมามีค่าเป็น 0 ดังตัวอย่าง 
 
ตัวอย่างที่ 2.7 แสดงการหาค่า 10011 – 1010 
 
ตัวอย่างที่ 2.8 แสดงการหาค่า 11001 – 1111 
เมื่อมนุษย์สามารถแปลงเลขฐานสิบเป็นฐานสอง และแปลงเลขฐานสองกลับเป็นเลขฐานสิบได้ ก็สามารถเขียนโปรแกรมเพื่อสั่งการให้คอมพิวเตอร์ทำงานได้ตามที่ต้องการ และพัฒนาวิธีการในการสื่อสารหรือสั่งการคอมพิวเตอร์มาเรื่อย ๆ จนในปัจจุบันผู้ใช้คอมพิวเตอร์ทั่วไปอาจไม่ต้องทำความเข้าใจการทำงานของคอมพิวเตอร์อย่างลึกซึ้งเช่นนี้ เนื่องจากมีบุคลากรที่ทำหน้าที่คิดค้นโปรแกรมที่สามารถรับข้อความหรือคำสั่งในรูปแบบของภาษาและระบบตัวเลขที่ผู้ใช้คุ้นเคย แล้วแปลความหมายเป็นเลขฐานสองก่อนส่งให้เครื่องคอมพิวเตอร์ประมวลผล 
2.3.2  รหัสแทนข้อมูล
(1)  รหัสแอสกี (American Standard Code Information Interchange : ASCII)
เป็นมาตรฐานที่นิยมใช้กันมากในระบบคอมพิวเตอร์และระบบสื่อสารข้อมูล รหัสแทนข้อมูลชนิดนี้ใช้เลขฐานสองจำนวน 8 บิต หรือเท่ากับ 1 ไบต์ แทนอักขระหรือสัญลักษณ์แต่ละตัว ซึ่งหมายความว่าการแทนอักขระแต่ละตัวจะประกอบด้วยตัวเลขฐานสอง 8 บิตเรียงกัน ซึ่งลำดับของแต่ละบิตเป็นดังนี้
 
จากหลักการของระบบเลขฐานสอง แต่ละบิตสามารถแทนค่าได้ 2 แบบ คือ เลข 0 หรือเลข 1 ถ้าเราเขียนเลขฐานสองเรียงกัน 2 บิตในการแทนอักขระ เราจะมีรูปแบบในการแทนอักขระได้ 22 หรือ 4 รูปแบบ คือ 00, 01, 10 และ 11 ดังนั้นในการใช้รหัสแอสกีซึ่งมี 8 บิตในการแทนอักขระแล้ว เราจะมีรูปแบบที่ใช้แทนได้ถึง 28 หรือ 256 รูปแบบ ซึ่งเมื่อใช้แทนตัวอักษรภาษาอังกฤษแล้วยังมีเหลืออยู่ สำนักงานมาตรฐานผลิตภัณฑ์อุตสาหกรรม หรือ สมอ. จึงได้กำหนดรหัสภาษาไทยเพิ่มลงไปเพื่อให้ใช้งานร่วมกัน ตามตารางดังรูปที่ 2.3
 
รูปที่ 2.3 ตารางแสดงรหัส ASCII แทนตัวอักษรภาษาอังกฤษและภาษาไทย 
(2)  รหัสเอบซีดิก (Extended Binary Coded Decimal Interchange Code : EBCDIC)
พัฒนาโดยบริษัทไอบีเอ็ม รหัสแทนข้อมูลนี้ไม่เป็นที่นิยมใช้แล้วในปัจจุบัน การกำหนดรหัสจะใช้ 8 บิตต่อหนึ่งอักขระเหมือนกับรหัสแอสกี แต่แบบของรหัสที่กำหนดจะแตกต่างกัน โดยรหัสเอบซีดิกจะเรียงลำดับแต่ละบิตที่ใช้แทนอักขระ ดังนี้
 
(3)  รหัสยูนิโค้ด (Unicode)
เป็นรหัสที่สร้างขึ้นมาในระยะหลังที่มีการสร้างแบบตัวอักษรของภาษาต่าง ๆ รหัสยูนิโค้ดเป็นรหัสที่ต่างจาก 2 ชนิดที่ได้กล่าวมาข้างต้น คือ ใช้เลขฐานสอง 16 บิตในการแทนตัวอักษร เนื่องจากที่มาของการคิดค้นรหัสชนิดนี้ คือ เมื่อมีการใช้งานคอมพิวเตอร์ในหลายประเทศและมีการสร้างแบบตัวอักษร (Font) ของภาษาต่าง ๆ ทั่วโลก ในบางภาษา เช่น ภาษาจีนและภาษาญี่ปุ่น เป็นภาษาที่เรียกว่าภาษารูปภาพ ซึ่งมีตัวอักษรเป็นหมื่นตัว หากใช้รหัสที่เป็นเลขฐานสอง 8 บิต เราสามารถแทนรูปแบบตัวอักษรได้เพียง 256 รูปแบบดังที่ได้อธิบายมาข้างต้น ซึ่งไม่สามารถแทนตัวอักษรได้ครบ จึงสร้างรหัสใหม่ขึ้นมาแทน และสามารถแทนตัวอักขระได้ถึง 65,536 ตัว ซึ่งมากพอและสามารถแทนสัญลักษณ์กราฟิกและสัญลักษณ์ทางคณิตศาสตร์ได้อีกด้วย
2.3.3  การจัดเก็บข้อมูลในหน่วยความจำ
หน่วยความจำหลักของคอมพิวเตอร์เป็นที่เก็บข้อมูลและคำสั่งในขณะประมวลผล การเก็บข้อมูลในหน่วยความจำเป็นการเก็บรหัสตัวเลขฐานสอง ข้อมูลที่ใช้ในการประมวลผลทั้งตัวเลขหรือตัวอักษรจะได้รับการแทนเป็นตัวเลขฐานสอง แล้วเก็บไว้ในหน่วยความจำ เช่น ข้อความว่า BANGKOK เก็บในคอมพิวเตอร์จะแทนเป็นรหัสเรียงกันไป ดังนี้
 
รูปที่ 2.4 แสดงตัวอย่างการแทนข้อมูลด้วยรหัสเลขฐานสองในหน่วยความจำ 
หน่วยความจำของไมโครคอมพิวเตอร์ที่ใช้กันอยู่ขณะนี้  มีขนาดความกว้าง 8 บิต และเก็บข้อมูลเรียงกันไป โดยมีการกำหนดตำแหน่งซึ่งเรียกว่า ตำแหน่งที่อยู่ (Address)
เพื่อให้ข้อมูลที่เก็บมีความถูกต้อง การเขียนหรืออ่านทุกครั้งจึงต้องตรวจสอบความถูกต้องของข้อมูล วิธีที่ง่ายและนิยมใช้กันคือการเพิ่มบิตพาริตี (Parity Bit) เพื่อตรวจสอบจำนวนเลข 1 ในรหัสแทนข้อมูลว่ามีจำนวนคู่หรือจำนวนคี่ ตัวอย่างเช่น พาริตีคู่ (Even Parity) ซึ่งเป็นการทำให้จำนวนของเลข 1 เป็นจำนวนคู่ บิตพาริตีที่เติมสำหรับข้อมูลตัวอักษร A และ E เป็นดังนี้
 
ข้อมูล A มีเลข 1 สองตัว ซึ่งเป็นจำนวนคู่ จึงใส่บิตพาริตีเป็นเลข 0
ข้อมูล E มีเลข 1 เป็นจำนวนคี่ จึงใส่บิตพาริตีเป็น 1 เพื่อให้มีเลข 1 เป็นจำนวนคู่
เมื่อต้องการตรวจสอบความถูกต้องของข้อมูลให้พิจารณาจำนวนของเลข 1 ที่ปรากฏในรหัสแทนข้อมูลนั้นร่วมกับบิตพาริตี ถ้ามีจำนวนเลข 1 เป็นจำนวนคู่แสดงว่าข้อมูลถูกต้อง แต่ถ้าได้เป็นจำนวนคี่แสดงว่าข้อมูลไม่ถูกต้อง
ข้อความ BANGKOK เมื่อเก็บในหน่วยความจำหลักของไมโครคอมพิวเตอร์ที่มีบิตพาริตีด้วย จะเป็นดังรูปที่ 2.5
 
รูปที่ 2.5 แสดงตัวอย่างการแทนข้อความในหน่วยความจำแบบบิตพาริตี 
2.3.4  การจัดเก็บคำสั่งในหน่วยความจำ
ในการทำงานของเครื่องคอมพิวเตอร์ นอกจากข้อมูลแล้ว สิ่งสำคัญอีกอย่างที่ทำให้เครื่องคอมพิวเตอร์สามารถดำเนินการต่าง ๆ ตามที่เราต้องการได้ คือ ชุดคำสั่ง โดยหน่วยควบคุมของคอมพิวเตอร์ที่อยู่ในหน่วยประมวลผลกลาง (Central Processing Unit : CPU) หรือที่เรียกกันทั่วไปว่า ซีพียู ทำการอ่านคำสั่งจากหน่วยความจำมาแปลความหมาย และกระทำตามคำสั่ง การแปลความหมายคำสั่ง หมายถึง การนำคำสั่งที่เขียนขึ้นด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งมาแปลงให้เป็นภาษาคอมพิวเตอร์ระดับพื้นฐานที่เรียกว่า “ภาษาเครื่อง” (Machine Langauge) ซึ่งมีลักษณะเป็นรหัสเลขฐานสอง คอมพิวเตอร์เครื่องหนึ่งมีคำสั่งที่ใช้ได้หลายร้อยคำสั่ง แต่ละคำสั่งจะมีความหมายเฉพาะ เช่น คำสั่งนำข้อมูลที่มีค่าเป็น 3 จากหน่วยความจำตำแหน่งที่ 8000 มาบวกกับข้อมูลที่มีค่าเป็น 5 ในตำแหน่งที่ 8001 ผลลัพธ์ที่ได้ให้เก็บไว้ในหน่วยความจำตำแหน่งที่ 8002 เมื่อเขียนคำสั่งเป็นภาษาเครื่องจะมีลักษณะเป็นเลขฐานสองเรียงต่อกันเป็นจำนวนมาก ซึ่งเข้าใจได้ยาก จึงมักใช้ตัวอักษรแทนรหัสภาษาเครื่องเหล่านี้ ดังตัวอย่างแสดงในรูปที่ 2.6 
 
รูปที่ 2.6 แสดงตัวอย่างการแทนคำสั่งภาษาเครื่อง 
รหัสภาษาเครื่องเมื่อเก็บอยู่ในหน่วยความจำของคอมพิวเตอร์จะมีลักษณะเรียงต่อกันไป สมมติให้ส่วนของคำสั่งเก็บในหน่วยความจำเริ่มจากตำแหน่ง 1000 และส่วนของข้อมูลเก็บไว้เริ่มจากตำแหน่ง 8000 ดังรูปที่ 2.7 
ภาษาเครื่องเป็นภาษาสั่งการพื้นฐานที่ใช้รหัสตัวเลขฐานสอง คอมพิวเตอร์ที่ใช้หน่วยประมวลผลกลางต่างตระกูลกันจะมีภาษาเครื่อง ที่แตกต่างกัน เช่น เครื่องที่ใช้ซีพียูเพนเทียม (Pentium) กับซีพียูที่ใช้ในเครื่องแมคอินทอช มีรหัสคำสั่งต่างกัน
 
รูปที่ 2.7 การเก็บข้อมูลและคำสั่งลงในหน่วยความจำด้วยรหัสเลข

ไม่มีความคิดเห็น:

แสดงความคิดเห็น