การคำนวณทางคณิตศาสตร์ในเครื่องคอมพิวเตอร์ จะมีวงจรที่ออกแบบด้วยวงจรลอจิกแบบคอมบิเนชัน
ได้แก่ วงจรบวก วงจรลบ และวงจรเปรียบเทียบ ซึ่งวงจรดังกล่าวจะประกอบอยู่ภายใน หน่วยคำนวณและเปรียบเทียบ (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 รหัสเลขทูคอมพลีเมนต์จะถูกนำมาใช้ในระบบคอมพิวเตอร์
ถ้าเป็นเลขจำนวนบวกจะใช้รหัสไบนารี่แบบ เครื่องหมาย – ขนาด แต่ถ้าเป็นจำนวนลบจะถูกแทนด้วยรหัสเลขทูคอมพลีเมนต์
เลขไบนารี่เมื่อถูกเปรียบให้เป็นรหัสทูคอมพลีเมนต์จะเป็นการเปลี่ยนเครื่องหมายเลขจำนวนนั้น
คุณสมบัติดังกล่าวซึ่งนำไปใช้สำหรับการลบโดยทำตัวลบให้เป็นรหัส ทูคอมพลีเมนต์ การคูณและการหารเลขไบนารี่สามารถทำได้หลายวิธี
เช่น การคูณอาจใช้วิธีการบวกซ้ำกันหลาย ๆ ครั้ง หรือการหารอาจใช้วิธีการลบซ้ำกันหลาย
ๆ ครั้ง แต่วิธีที่นิยมจะใช้วิธีเลื่อนข้อมูลเข้าช่วย ทั้งหารคูณและการหาร