วันจันทร์ที่ 23 พฤศจิกายน พ.ศ. 2558

การคำนวณทางคณิตศาสตร์





การคำนวณทางคณิตศาสตร์ในเครื่องคอมพิวเตอร์ จะมีวงจรที่ออกแบบด้วยวงจรลอจิกแบบคอมบิเนชัน ได้แก่ วงจรบวก วงจรลบ และวงจรเปรียบเทียบ ซึ่งวงจรดังกล่าวจะประกอบอยู่ภายใน หน่วยคำนวณและเปรียบเทียบ (ALU : Arithmetic Logic Unit) ของระบบคอมพิวเตอร์ สำหรับในทางปฏิบัติการบวกและลบนั้นจะใช้ฮาร์ดแวร์ตัวเดียวกัน คือ จะใช้วงจรบวกเท่านั้น การคำนวณแบบลบ จะอาศัยข้อมูลที่มีค่าเป็นเลขลบ มากระทำการบวกกับตัวตั้ง สำหรับการคูณจะอาศัยการบวกซ้ำกันหลาย ๆ ครั้ง และการหารก็จะใช้การลบซ้ำกันหลาย ๆ ครั้ง หรืออาจใช้วิธีการอื่น ๆ เช่น การเลื่อนหรือหมุนข้อมูลเข้าช่วยในการคำนวณ สำหรับในบทนี้จะกล่าวถึงวิธีการบวก และลบเลขฐานสอง การใช้เลขคอมพลีเมนต์แทนจำนวนลบ เลขฐานสองที่มีเครื่องหมาย และการคูณ การหารเลขฐานสอง

การบวกเลขฐานสอง
          การบวกเลขฐานสอง หรือเลขไบนารี คล้ายกับการบวกเลขฐานสิบที่เราคุ้นเคย แต่การบวกเลขฐานสองนั้นง่ายกว่า เพราะมีเพียง 4 กรณี เท่านั้นที่จะต้องจำ คือ
0 + 0 = 0          (7.1)
0 + 1 = 1          (7.2)
1 + 0 = 1          (7.3)
1 + 1 = 10        (7.4)
          จะเห็นว่าสมการที่ (7.1), (7.2) และ (7.3) เป็นการบวกเหมือนกับเลขฐานสิบ แต่ในสมการที่ (7.4) จะไม่เหมือนกับการบวกเลขฐานสิบ เราสามารถจะอธิบายได้ดังนี้ 1 + 1 เท่ากับ 2 ในเลขฐานสิบ ให้เปลี่ยน 2 เป็นเลขฐานสองจะได้ 10 เลขฐานสอง ดังนั้น 1 + 1 = 10

การลบเลขฐานสอง
          มีกฎพื้นฐานอยู่ 4 อย่าง สำหรับการลบเลขฐานสอง ดังนี้0 – 0 = 0          (7.5)
0 – 0 = 1          (7.6)
1 – 1 = 0          (7.7)
10 – 1 = 1        (7.8)
          สมการที่ (7.5), (7.6) และ (7.7) เป็นการลบเหมือนกับเลขฐานสิบ แต่สมการที่ (7.8) จะไม่เหมือนกับการลบเลขฐานสิบ สามารถอธิบายได้ดังนี้ จำนวน 102 = 210 ดังนั้น เมื่อ 2 – 1 = 1 ในการตั้งลบ เมื่อนำ 1 ไปลบ 0 (0 – 1) จะลบไม่ได้ต้อง ยืม บิตที่สูงกว่ามา 102 หรือ 210 บิตที่ถูกยืมก็จะเหลือเป็น 0 ผลการลบจะได้เท่ากับ 1 (2 – 1 = 1)

เลขฐานสองแบบไม่มีเครื่องหมาย
           บางครั้งข้อมูลที่เป็นจำนวนค่าตัวเลข จะคำนึงถึงเฉพาะขนาด หรือแมกนิจูด (magnitude) อย่างเดียว จะไม่สนใจเครื่องหมายบวก ( + ) หรือลบ ( – ) ตัวอย่างเช่น เลขฐานสองขนาด 8 บิต จะมีขนาด ตั้งแต่น้อยที่สุด คือ 0000 0000 ไปจนถึงขนาดมากที่สุดคือ 1111 1111 หรือถ้าเป็นเลขฐานสิบหก จะเริ่มตั้งแต่ 00H ถึง FFH และถ้าเป็นเลขฐานสิบ ก็คือ 0 ถึง 255
          จำนวนที่แสดงเฉพาะขนาด เราเรียกว่า จำนวนแบบไม่มีเครื่องหมาย ถ้าเป็นเลขฐานสอง ก็จะเป็นเลขฐานแบบไม่มีเครื่องหมาย บิตทุกบิตบนจำนวนนั้นจะเป็นค่าน้ำหนัก ซึ่งเทียบได้กับเลขฐานสิบทุกบิต แต่เราก็สามารถที่จะทำการบวกหรือลบได้ตามปกติ

เลขฐานสองที่มีเครื่องหมาย
          ในเลขฐานสิบที่มีเครื่องหมายติดลบ จะเขียนเครื่องหมายลบไว้ข้างหน้าของขนาดตัวเลข เช่น –1, –2, –3 เป็นต้น ส่วนเลขที่มีจำนวนบวก ถ้าจะเขียนเครื่องหมายบวกข้างหน้าขนาดตัวเลขก็ได้ เช่น +1, +2, +3 หรือ อาจไม่ต้องเขียนก็หมายถึงเลขจำนวนบวก ถ้าแปลงเลขฐานสิบให้เป็นเลขฐานสอง และมีเครื่องหมายติดลบด้วยก็ได้ –001, –010, –011 หรือถ้าเป็นจำนวนบวกก็จะได้ +001, +010, +011 แต่การนำข้อมูลเหล่านี้ไปประมวลผลในระบบดิจิตอลจะไม่สามารถประมวลผลได้ ระบบจะทำงานได้เฉพาะข้อมูลดิจิตอลที่เป็น 0 และ 1 เท่านั้น ดังนั้นเครื่องหมายบวก (+) จึงถูกกำหนดให้เป็นค่าลอจิก 0 และเครื่องหมายลบ (–) ถูกกำหนดให้เป็นค่าลอจิก 1 จึงทำให้ +001, +010 และ +011 ถูกเปลี่ยนเป็นรหัส 4 บิต ดังนี้ 0001, 0010 และ 0011 ส่วนจำนวนลบจะได้รหัส 4 บิต เช่นกัน คือ 1001, 1010 และ 1011

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

การบวก ลบ ที่ใช้ทูคอมพลีเมนต์
          ในเครื่องคอมพิวเตอร์ยุคแรก ๆ จะใช้เลขฐานสองชนิด เครื่องหมาย- ขนาด คือ เลขฐานสองที่มีค่าลอจิกแสดงเครื่องหมายบวก หรือลบ ซึ่งทำให้เกิดความยุ่งยากในการสร้างวงจร ต่อมาได้นำรหัสเลขทูคอมพลีเมนต์มาใช้ และพบว่างานด้านการสร้างวงจรลดความยุ่งยากลงอย่างมาก ซึ่งเหตุผลดังกล่าวทำให้ ในปัจจุบันนิยมใช้รหัสเลขทูคอมพลีเมนต์ แทนเลขจำนวนลบ ในภาพที่ 7 .3 แสดงบล็อกไดอะแกรมส่วนประกอบของฮาร์ดแวร์ที่ใช้ในการบวกและการลบ เลขที่เป็นตัวตั้งจะถูกเก็บไว้ในรีจีสเตอร์ A ส่วนตัวบวกหรือตัวลบจะเก็บไว้ในรีจีสเตอร์ B ถ้าเป็นการบวก ข้อมูลจาก รีจีสเตอร์ A และ รีจีสเตอร์ B จะส่งเข้าวงจรบวกโดยตรง แต่ถ้าเป็นการลบ ข้อมูลจากรีจีสเตอร์ B จะถูกเปลี่ยนให้เป็น ทูคอมพลีเมนต์ก่อนจะทำการส่งเข้าวงจรบวก และเมื่อได้ผลลัพธ์จะส่งไปเก็บในรีจีสเตอร์ A

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

การหาร
          กระบวนการหาร (division) มีความซับซ้อนมากกว่าการคูณ แต่ก็ใช้หลักการพื้นฐานที่เหมือนกัน เริ่มต้นด้วยการหารด้วยมือและกระบวนการเลื่อนบิต และการบวก และการลบเลข

          สรุปคือ เลขไบนารี่ 8 บิต แบบไม่มีเครื่องหมายจะแสดงได้ตั้งแต่ 0000 0000 ถึง 1111 1111 หรือ 0 ถึง 255 ส่วนไบนารี่ 16 บิตไม่มีเครื่องหมายจะมีขนาดตั้งแต่ 0 ถึง 65,535 การเกิด โอเวอร์โฟลว์ จะเกิดเเมื่อผลบวกหรือผลคูณมีขนาดมากกว่า ขอบเขตของระบบจำนวนที่จะเป็นได้ เช่น การประมวลผลเลขไบนารี่ 8 บิต โอเวอร์โฟลว์จะเกิดเมื่อผลลบมากกว่า 255 เลขไบนารี่แบบ เครื่องหมายขนาด (sign - magnitude) จะใช้บิต MSB เป็นบิตเครื่องหมาย โดยลอจิก “0” จะแทนเครื่องหมายบวก (+) และลอจิก “1” จะแทนเครื่องหมายลบ (-) ส่วนบิตที่เหลือจะแทนขนาดของจำนวน ดังนั้นถ้าเป็นไบนารี่ 8 บิต จะมีขนาดตั้งแต่ -127 ถึง +127 ถ้าเป็น 16 บิต จะมีขนาดตั้งแต่ -32,767 ถึง +32,767 รหัสเลขทูคอมพลีเมนต์จะถูกนำมาใช้ในระบบคอมพิวเตอร์ ถ้าเป็นเลขจำนวนบวกจะใช้รหัสไบนารี่แบบ เครื่องหมายขนาด แต่ถ้าเป็นจำนวนลบจะถูกแทนด้วยรหัสเลขทูคอมพลีเมนต์ เลขไบนารี่เมื่อถูกเปรียบให้เป็นรหัสทูคอมพลีเมนต์จะเป็นการเปลี่ยนเครื่องหมายเลขจำนวนนั้น คุณสมบัติดังกล่าวซึ่งนำไปใช้สำหรับการลบโดยทำตัวลบให้เป็นรหัส ทูคอมพลีเมนต์ การคูณและการหารเลขไบนารี่สามารถทำได้หลายวิธี เช่น การคูณอาจใช้วิธีการบวกซ้ำกันหลาย ๆ ครั้ง หรือการหารอาจใช้วิธีการลบซ้ำกันหลาย ๆ ครั้ง แต่วิธีที่นิยมจะใช้วิธีเลื่อนข้อมูลเข้าช่วย ทั้งหารคูณและการหาร

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

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