320 likes | 590 Views
บทที่ 7 การคำนวณเลขฐานและและการแทนรหัสข้อมูล. การคำนวณเลขฐาน (Calculate Base Number). การคำนวณเลขฐานเป็นการคำนวณเลขฐานต่างๆ ซึ่งเป็นการคำนวณในการบวกเลขฐาน และการคำนวณในการลบเลขฐาน เช่นการบวกและลบของเลขฐานสอง การบวกและลบของเลขฐานแปด การบวกและลบของเลขฐานสิบ และการบวกและลบของเลขฐานสิบหกเป็นต้น.
E N D
บทที่ 7การคำนวณเลขฐานและและการแทนรหัสข้อมูล
การคำนวณเลขฐาน (Calculate Base Number) การคำนวณเลขฐานเป็นการคำนวณเลขฐานต่างๆ ซึ่งเป็นการคำนวณในการบวกเลขฐาน และการคำนวณในการลบเลขฐาน เช่นการบวกและลบของเลขฐานสอง การบวกและลบของเลขฐานแปด การบวกและลบของเลขฐานสิบ และการบวกและลบของเลขฐานสิบหกเป็นต้น
การบวกเลขฐานสอง เลขฐานแปด เลขฐานสิบหก หลักการคำนวณพื้นฐานในการบวกของเลขฐานสอง เลขฐานแปด และเลขฐานสิบหากหรือเลขฐานต่างๆ จะกระทำคล้ายกันกับการคำนวณเลขฐานสิบที่เรานิยมใช้ ถ้ากระทำการบวกได้เกินเลขฐานให้ทำการทดไปยังบิตที่มีนัยสำคัญสูงกว่าถัดไป เพื่อใช้ในการคำนวณในส่วนของบิตที่มีนัยสำคัญสูงกว่าถัดไป
หลักการบวกเลขฐานสอง เลขฐานแปด เลขฐานสิบหก 1. ให้บวกเลขแต่ละหลักตามปกติเหมือนการบวกเลขฐานสิบ 2. ถ้าผลบวกได้ไม่เกินเลขฐาน ให้ใส่ผลบวกที่ได้เป็นผลลัพธ์ 3. ถ้าผลบวกได้เท่ากันกับเลขฐานหรือเกินเลขฐานนั้น ให้ใส่ผลลัพธ์ของค่าผลบวกของเลขฐานที่เกินเลขฐานนั้นแล้วทดค่าไปยังบิตถัดไป (ทดไปยังบิตที่มีนัยสำคัญสูงกว่า:MSD)
ตัวอย่างที่ 7.1 ให้ทำการบวกเลขฐานดังนี้ (6547)10 + (1234)10 วิธีทำ 6 5 4 7 + 1 2 3 4 7 7 8 1 คำตอบคือ (6547)10 + (1234)10= (7781)2
ตัวอย่างที่ 7.2 ให้ทำการบวกเลขฐานดังนี้ (1111)2 + (1011)2 วิธีทำ 1 1 1 1 + 1 0 1 1 1 1 0 1 0 คำตอบคือ (1111)2 + (1011)2= (11010)2
ตัวอย่างที่ 7.3 ให้ทำการบวกเลขฐานดังนี้ (375)8 + (421)8 วิธีทำ 3 7 5 + 4 2 1 1 0 1 6 คำตอบคือ (375)8 + (421)8= (1016)8
ตัวอย่างที่ 7.4 ให้ทำการบวกเลขฐานดังนี้ (235A)16 + (3B71)16 วิธีทำ 2 3 5 A + 3 B 7 1 5 E C B คำตอบคือ (235A)16 + (3B71)16 = (5ECB)16
ตัวอย่างที่ 7.5 ให้ทำการบวกเลขฐานดังนี้ (1234)8 + (55)16 = (?)8 วิธีทำ แปลง (55)16ให้อยู่ในรูปแบบของเลขฐานแปด (55)16 = (01010101)2 = (125)8 1 2 3 4 + 1 2 5 1 3 6 1 คำตอบคือ (1234)8 + (55)16 = (1361)8
การลบเลขฐานสอง เลขฐานแปด เลขฐานสิบหก หลักการคำนวณพื้นฐานในการลบของของเลขฐานสอง เลขฐานแปด และเลขฐานสิบหากหรือเลขฐานต่างๆ จะกระทำคล้ายกันกับการคำนวณเลขฐานสิบที่เรานิยมใช้ ถ้าตัวตั้งน้อยกว่าตัวลบจะไม่สามารถกระทำการลบได้ ดังนั้นจึงจำเป็นต้องยืมตัวยืมที่อยู่ในบิตที่มีนัยสำคัญสูงกว่ามาทีละหนึ่งบิต จึงจะสามารถทำการลบได้
หลักการลบเลขฐานสอง เลขฐานแปด เลขฐานสิบหก 1. กรณีหลักตัวตั้งเท่ากันหรือมากกว่าให้ลบตามปกติ 2. กรณีที่หลักตัวตั้งน้อยกว่าตัวลบ จะต้องมีการยืม โดยการยืมแต่ละครั้งมีหลักเกณฑ์คือ ให้ยืมตัวที่บิตที่มีนัยสำคัญสูงกว่ามา 1 บิต (ยืมบิตที่มีบิตนัยสำคัญสูงกว่าถัดไป) ตัวที่ยืมจะมีค่าลดลงไป 1 ค่า โดยค่าที่ยืมมาจะมีค่าเท่ากับค่าของเลขฐานนั้น (เช่นเลขฐานสิบค่าที่ยืมเข้ามาจะมีค่าเท่ากับ 10 เลขฐานสองค่าที่ยืมเข้ามาจะมีค่าเท่ากับ 2 เลขฐานแปดค่าที่ยืมเข้ามาจะมีค่าเท่ากับ 8 และเลขฐานสิบหกค่าที่ยืมเข้ามาจะมีค่าเท่ากับ 16) จากนั้นให้นำค่าที่ยืมเข้ามาไปบวกกับตัวตั้ง ได้เท่าไรก็ให้นำมาลบออกกับตัวลบ ก็จะได้ผลลัพธ์ตามต้องการ
ตัวอย่างที่ 7.6 ให้ทำการลบเลขฐานดังนี้ (9211)10 – (1234)10 วิธีทำ 9 2 1 1 - 1 2 3 4 7 9 7 7 คำตอบ (9211)10 – (1234)10 = (7977)10
ตัวอย่างที่ 7.7 ให้ทำการลบเลขฐานดังนี้ (1101)2 – (1011)2 วิธีทำ 1 1 0 1 - 1 0 1 1 0 0 1 0 คำตอบ (1101)2 – (1011)2 = (0010)2
ตัวอย่างที่ 7.8 ให้ทำการลบเลขฐานดังนี้ (6753)8 – (5736)8 วิธีทำ 6 7 5 3 - 5 7 3 6 1 0 1 5 คำตอบ (6753)8 – (5736)8 = (1015)8
ตัวอย่างที่ 7.9 ให้ทำการลบเลขฐานดังนี้ (77AE)16 – (5B0F)16 วิธีทำ 7 7 A E - 5 B 0 F 1 C 9 F คำตอบ (77AE)16 – (5B0F)16 = (1C9F)16
ตัวอย่างที่ 7.10 ให้ทำการบวกเลขฐานดังนี้ (1234)8 - (55)16 = (?)8 วิธีทำ แปลง (55)16ให้อยู่ในรูปแบบของเลขฐานแปด (55)16 = (01010101)2 = (125)8 1 2 3 4 - 1 2 5 1 1 0 7 คำตอบคือ (1234)8 + (55)16 = (1107)8
ตัวอย่างที่ 7.11 ให้ทำการคำนวณเลขฐานดังนี้ (1234)8 - (55)16 + (110101)2 = (?)2 วิธีทำ แปลง (1234)8ให้อยู่ในรูปแบบของเลขฐานสอง (1234)8 = (001010011100)2 แปลง (55)16ให้อยู่ในรูปแบบของเลขฐานสอง (55)16 = (01010101)2 0 0 1 0 1 0 0 1 1 1 0 0 - 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 + 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 คำตอบคือ (1234)8 - (55)16 + (110101)2 = (1001111100)2
การลบเลขฐานสองโดยใช้ส่วนเติมเต็ม (Complement) หลักการคำนวณพื้นฐานของคอมพิวเตอร์ในการลบสามารถกระทำได้หลายวิธีดังเช่นการใช้ส่วนเติมเต็มหรือคอมพลีเม้น เนื่องจากบางระบบคอมพิวเตอร์จะทำการลดวงจรบางอย่างออกไป ถ้าสร้างวงจรบวก และวงจรลบ ก็หมายความว่าจะต้องสร้างทั้งวงจรบวกและลบ แต่ถ้าต้องการประหยัดวงจบลบ ก็จะสามารถตัดวงจรลบทิ้งไปแต่จะใช้วงจรบวกเพียงอย่างเดียวในการคำนวณการลบเลขฐานโดยจะใช้วงจรบวกและส่วนเติมเต็มในการคำนวณการลบของระบบนั้น โดยส่วนเติมเต็มในระบบเลขฐานสองจะมีอยู่ 2 แบบ คือ 1’s ส่วนเติมเต็ม (1’s Complement) และ 2’s ส่วนเติมเต็ม (2’s Complement)
หลักการลบเลขฐานโดยใช้ 1’s ส่วนเติมเต็ม 1. ให้ทำการกลับบิตทุกหลักของตัวลบ เช่นจาก “0” กลายเป็น “1” จาก “1” กลายเป็น “0” 2. ให้ทำการบวกตัวตั้งและตัวลบที่ทำการกลับบิต 3. ถ้าบวกกันมีบิตตัวทด ในตำแหน่งนัยสำคัญสูงสุด แสดงว่าคำตอบที่ได้จะมีค่าเป็นบวก จากนั้นให้ทำการบวกคำตอบกับบิตตัวทด จะได้คำตอบออกมา 4. ถ้าบวกกันแล้วไม่มีบิตตัวทด ในตำแหน่งนัยสำคัญสูงสุด แสดงว่าคำตอบที่ได้จะมีค่าเป็นลบ จากนั้นให้ทำการกลับบิตผลลัพธ์ทั้งหมด จะได้คำตอบออกมา
ตัวอย่างที่ 7.12 ให้ทำการคำนวณเลขฐานดังนี้ (11011)2 - (10111)2 วิธีทำ แปลง (10111)2โดยใช้ 1’s ส่วนเติมเต็ม (10111)2 = (01000)2 1 1 0 1 1 + 0 1 0 0 0 1 0 0 0 1 1 + 1 0 0 1 0 0 คำตอบคือ (11011)2 - (10111)2 = (00100)2
ตัวอย่างที่ 7.13 ให้ทำการคำนวณเลขฐานดังนี้ (101101)2 - (110010)2 วิธีทำ แปลง (110010)2โดยใช้ 1’s ส่วนเติมเต็ม (110010)2 = (001101)2 1 0 1 1 0 1 + 0 0 1 1 0 1 0 1 1 1 0 1 0 กลับบิต - 0 0 0 1 0 1 คำตอบคือ (101101)2 - (110010)2 = (-101)2
หลักการลบเลขฐานโดยใช้ 2’s ส่วนเติมเต็ม 1. ให้ทำการกลับบิตทุกหลักของตัวลบ เช่นจาก “0” กลายเป็น “1” จาก “1” กลายเป็น “0” จากนั้นบวกด้วย “1” 2. ให้ทำการบวกตัวตั้งและตัวลบที่ทำการกลับบิต 3. ถ้าบวกกันมีบิตตัวทด ในตำแหน่งนัยสำคัญสูงสุด แสดงว่าคำตอบที่ได้จะมีค่าเป็นบวก จากนั้นให้ทำการตัดบิตตัวทดทิ้ง จะได้คำตอบออกมา 4. ถ้าบวกกันแล้วไม่มีบิตตัวทด ในตำแหน่งนัยสำคัญสูงสุด แสดงว่าคำตอบที่ได้จะมีค่าเป็นลบ จากนั้นให้ทำการกลับบิตผลลัพธ์ทั้งหมด จากนั้นบวกด้วย “1” จะได้คำตอบออกมา
ตัวอย่างที่ 7.14 ให้ทำการคำนวณเลขฐานดังนี้ (11011)2 - (10111)2 วิธีทำ แปลง (10111)2โดยใช้ 2’s ส่วนเติมเต็ม (10111)2 = (01000)2 + (1)2 = (01001)2 1 1 0 1 1 + 0 1 0 0 1 1 0 0 1 0 0 คำตอบคือ (11011)2 - (10111)2 = (00100)2
ตัวอย่างที่ 7.15 ให้ทำการคำนวณเลขฐานดังนี้ (101101)2 - (110010)2 วิธีทำ แปลง (110010)2โดยใช้ 2’s ส่วนเติมเต็ม (110010)2 = (001101)2 + (1)2 = (001110)2 1 0 1 1 0 1 + 0 0 1 1 1 0 0 1 1 1 0 1 1 กลับบิต 0 0 0 1 0 0 + 1 - 0 0 0 1 0 1 คำตอบคือ (101101)2 - (110010)2 = (-101)2
7.2 การแทนรหัสข้อมูล (Data Representation) คอมพิวเตอร์ในปัจจุบันประมวลผลในรูปแบบของเลขฐานสอง คือ “0” กับ “1” ซึ่งใช้แทนข้อมูลต่างๆ ของระบบคอมพิวเตอร์ ดังนั้นการนำเอาข้อมูลที่มนุษย์เข้าใจเช่น เสียง รูปภาพ ตัวอักษร ตัวเลข หรือสัญลักษณ์ต่างๆ ไปประมวลผลจะต้องนำข้อมูลดังกล่าวให้อยู่ในรูปของดิจิทัลก่อน โดยมาตรฐานในการแทนรหัสข้อมูลที่นิยมใช้กันในปัจจุบันได้แก่แอสกี หรือรหัสมาตรฐานของสหรัฐอเมริกาเพื่อการสับเปลี่ยนสารสนเทศ (ASCII: American Standard Code for Information Interchange) และ ยูนิโคด(Unicode)
มาตรฐานรหัสแอสกี (ASCII) พื้นฐานของกลุ่มตัวอักษรเหล่านี้จะอยู่ในรูปแบบตารางตัวอักษร โดยแต่ละตัวจะถูกแทนด้วยรหัสเลขฐานสองขนาด 7 บิต ซึ่งสามารถแทนรหัสตัวอักษรได้ 27= 128 ตัวอักษร ต่อมารหัสแอสกีได้รับความนิยมอย่างแพร่หลายและเริ่มไม่เพียงพอต่อการแทนข้อมูล จึงมีการนำเอารหัสแอสกีมาปรับปรุงให้สามารถแทนข้อมูลได้มากขึ้น เรียกว่า ส่วนขยายรหัสแอสกี (Extend ASCII) ซึ่งจะใช้เลขฐานสองขนาด 8 บิต โดยเลขฐานสอง 8 บิตใช้แทนอักษรหนึ่งตัวทำให้สามารถแทนอักษรได้ 28 = 256 ตัวอักษร โดยอักษรที่ 0 – 127 ยังตรงตามมาตรฐานเดิม ส่วนอักษรที่ 128 – 255 ใช้แทนอักษรที่ประเทศนั้น ๆ ต้องการ วิธีการนี้ทำให้แทนอักษรอื่นที่นอกเหนือจากภาษาอังกฤษได้
ตัวอย่างตารางรหัสแอสกี ASCII
มาตรฐานรหัสยูนิโคด (Unicode) เนื่องจากตัวอักษรตามรหัสแอสกี แทนอักษรภาษาอังกฤษกับภาษาท้องถิ่นได้ภาษาเดียวเท่านั้น ถ้าต้องการแสดงผลหลายๆ ภาษาจะทำให้ลำบาก จึงมีการคิดมาตรฐานการแทนอักษรใหม่ที่เรียกว่ายูนิโคด ที่สามารถแทนตัวอักษรได้มากขึ้นกว่าเดิม มาตรฐานยูนิโคด(Unicode Standard) เป็นมาตรฐานการเข้ารหัสตัวอักษรแบบสากล โดยสามารถเข้ารหัสตัวอักษรของภาษาต่างๆ ได้จำนวนมาก โดยมาตรฐานยูนิโคดจะใช้เลขฐานสองแทนตัวอักษร เริ่มต้นแบ่งเป็น UCS-2 จะใช้รหัสเลขฐานสองขนาด 16 บิต ทำให้สามารถแทนตัวอักษรได้ถึง 65,536 ตัวอักษร และ UCS-4 จะใช้รหัสเลขฐานสองขนาด 32 บิต ทำให้สามารถแทนตัวอักษรได้ถึง 2,147,483,647 ตัวอักษร
แบบฝึกหัดทบทวน • จงทำการคำนวณเลขฐานดังนี้ (11011)2 + (10011)2 = ( ? )8 • จงทำการคำนวณเลขฐานดังนี้ (273)8 + (1011010)2= ( ? )2 • จงทำการคำนวณเลขฐานดังนี้ (354)8 + (1110)2 = ( ? )8 • จงทำการคำนวณเลขฐานดังนี้ (5364)8 – (4756)8 = ( ? )8 • จงทำการคำนวณเลขฐานดังนี้ (6753)8 – (5736)8 = ( ? )16 • จงทำการคำนวณเลขฐานดังนี้ (FA89)16 – (DC6A)16 = ( ? )16 • จงทำการคำนวณเลขฐานดังนี้ (100101)2 – (110110)2 = ( ? )2โดยใช้วิธี 1’s ส่วนเติมเต็ม • จงทำการคำนวณเลขฐานดังนี้ (111101)2 – (100110)2 = ( ? )2โดยใช้วิธี 1’s ส่วนเติมเต็ม • จงทำการคำนวณเลขฐานดังนี้ (101101)2 – (100110)2 = ( ? )2โดยใช้วิธี 2’s ส่วนเติมเต็ม • จงทำการคำนวณเลขฐานดังนี้ (111101)2 – (100110)2 = ( ? )2โดยใช้วิธี 2’s ส่วนเติมเต็ม • รหัสแอสกีคืออะไรจงอธิบาย • รหัสยูนิโคดคืออะไรจงอธิบาย http://www.udru.ac.th
เอกสารอ้างอิง งามนิจ อาจอินทร์, ความรู้ทั่วไปเกี่ยวกับวิทยาการคอมพิวเตอร์., กรุงเทพฯ, 2542. ธวัชชัย เลื่อนฉวี, และ อนุรักษ์ เถื่อนศิริ, ดิจิตอลเทคนิคเล่ม 1., กรุงเทพฯ, ศุภาลัยมีเดียจำกัด, 2537. ธีรวัฒน์ ประกอบผล, ดิจิตอลอิเล็กทรอนิกส์., กรุงเทพฯ, แมคกรอ-ฮิล อินเตอร์เนชันแนล เอ็นเตอร์ไพร์ส, อิงค์., 2540. http://www.udru.ac.th http://www.udru.ac.th