ขออภัยท่านผู้อ่านนะครับ ที่หายไปนานน แต่ก็กลับมาเขียนอีกจนได้ ความจริงแล้วเรื่องคณิตศาสตร์เป็นพื้นฐานสำคัญจริงๆ เพราะเป็นส่วนหนึ่งในการปูพื้นฐานทางคอมพิวเตอร์ ไม่ว่าจะเป็นด้านความคิดอย่างมีเหตุผล(ตรรกะ) หรือการคำนวนตามแบบที่คณิตศาสตร์มีอยู่ จากบทความส่วนแรก ผมเกริ่นๆ เกี่ยวกับเรื่อง จำนวน และ ฐาน ซึ่งคงไม่ยากเท่าไหร่ สำหรับบทความนี้ก็จะมีหัวข้อเพิ่มเติมดังนี้
การกระทำทางคณิตศาสตร์
สำหรับ การกระทำทางคณิตศาสตร์ ก็ต้องมีเครื่องหมายแสดงการกระทำ(ภาษาอังกฤษเรียก Operator) เราต้องมีตัวตั้ง และตัวกระทำอีกด้วย (ภาษาอังกฤษเรียก Operand ทั้งคู่นะครับ) เครื่องหมายแสดงการกระทำนั้นไม่ใช่อะไรแปลกใหม่สำหรับท่านผู้อ่านแม้แต่นิดเดียว (เพราะใช้กันอยู่ทุกวัน) นั่นก็คือ เครื่องหมาย
- การบวก คงจะไม่ต้องให้รายละเอียดเพิ่มเติมอะไรอีกสำหรับเลขฐาน 10 แต่ในเลขฐาน n ใดๆนั้น กระบวนการบวกนั้นจะสิ้นสุดแค่ n – 1 (นั่นหมายความว่าแต่ละหลักจะมีค่าเกิน n – 1 ไม่ได้) โดยใช้ขั้นตอนวิธีดังต่อไปนี้
- สมมุติให้ตัวตั้ง และตัวกระทำมี m หลัก (ถ้าไม่เท่ากันให้ใส่ 0 ข้างหน้าตัวที่มีหลักน้อยกว่า) โดย 1 กำกับหลักทางขวาสุด จนถึง m กำกับหลักทางซ้ายสุด
- นำหลักที่ m ของตัวตั้งมาบวกกับตัวกระทำ (ในที่นี้จะใช้การคิดแบบฐาน 10) ถ้ามีทดให้บวกตัวทดด้วย ถ้าผลลัพธ์มีค่าน้อยกว่า n นั่นคือคำตอบของหลักที่ m แต่ถ้าผลลัพธ์มีค่ามากกว่าหรือเท่ากับ n แล้ว ให้นำผลลัพธ์ดังกล่าวไปลบ n ผลที่ได้คือคำตอบในหลักที่ m และทด 1 ในหลัก ที่ m – 1
- ลดค่า m ลง 1 และทำซ้ำขั้นตอนทั้งหมดจนกระทั้ง m = 0
- การลบ ก็คงจะไม่ต้องให้รายละเอียดเพิ่มอีกเช่นกัน (แล้วจะเขียนทำไมเนี่ยย +*+) ในฐาน 10 แต่ในการลบในทางคอมพิวเตอร์แล้ว จะเป็นการบวก(ของเลขฐานสอง) ซึ่งใช้วิธีดังนี้
- ให้แปลงตัวตั้งและตัวกระทำเป็นเลขฐานสอง
- แปลงตัวกระทำโดยใช้หลัก 2’s complement โดย
- เปลี่ยนบิท2 ของตัวกระทำให้กลับกันทั้งหมด (เปลี่ยนจาก 0 เป็น 1 และเปลี่ยนจาก 1 เป็น 0)
- บวกผลลัพท์ดังกล่าวด้วย 1
- นำตัวตั้งและ 2’s complement ของตัวกระทำมาบวกกัน (โดยใช้ขั้นตอนการบวกข้างต้น)
- ผลลัพธ์ที่ได้จะมีตัวทดข้างหน้าหลัก (ฉะนั้น หลักทั้งหมดจะมี m + 1 หลัก) ให้ตัดตัวแรกออก3
- แปลงผลลัพธ์กลับไปเป็นฐาน n ใดๆ
หากจะเขียนโดยไม่แสดงตัวอย่างให้ดู ผู้อ่านคงจะไม่ค่อยเข้าใจเป็นแน่ ดังนั้นผมจะเขียนตัวอย่างให้ดูในคราวหน้านะครับ
อ้างอิง :
- รำพรรณ จันทวีวัฒน์, ผู้ช่วยศาสตราจารย์. คณิตศาสตร์สำหรับคอมพิวเตอร์. กรุงเทพฯ. โอเดียนสโตร์. พิมพ์ครั้งที่ 1 ปี 2543
- Stephen Brown; Zvonko Vranesic. Fundamentals of Digital Logic With VHDL Design. Singapore. McGraw-Hill : 2000
[1] อันเนื่องมาจากข้อจำกัดทางการแสดงผลในคอมพิวเตอร์จึงไม่สามารถแสดงรูปของเครื่องหมายทั้งหมดได้ แต่คิดว่าผู้อ่านคงจะทราบดีว่าเครื่องหมายแทนการคูณ และการหาร สามารถเขียนได้เป็นรูปอื่นอีก
[2] เราเรียกแต่ละหลักของเลขฐานสองว่า บิท – bit
[3]ขออภัยท่านผู้อ่านด้วย เนื่องจากผมเขียนขั้นตอนขาดไปในส่วนนี้จึงต้องขอแก้ไข