วันศุกร์ที่ 13 มีนาคม พ.ศ. 2552

บทที่ 7 - การคำนวณทางคณิตศาสตร์

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

การบวกเลขฐานสอง
การบวกเลขฐานสอง หรือเลขไบนารี คล้ายกับการบวกเลขฐานสิบที่เราคุ้นเคย แต่การบวกเลขฐานสองนั้นง่ายกว่า เพราะมีเพียง 4 กรณี เท่านั้นที่จะต้องจำ คือ
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
การอธิบายและเขียนเลขฐานต่าง ๆ 4 อย่าง คือ เลขฐานสอง เลขฐานสิบ เลขฐานแปด และเลขฐานสิบหก ตัวเลขบางจำนวนอาจทำให้สับสน เช่น 10 อาจเป็นเลขฐานใดก็ได้ใน 4 อย่างที่กล่าวมา ดังนั้นเพื่อให้เกิดความแตกต่างจึงต้องใช้ ตัวห้อย (subscripts) เป็นตัวเลขแทนเลขฐานนั้น ๆ ดังนี้
2 แทน เลขฐานสอง
8 แทน เลขฐานแปด
10 แทน เลขฐานสิบ
16 แทน เลขฐานสิบหก

การบวกเลขฐานสองหลายบิต
การบวกเลขฐานสองหลายบิต จะต้องนำตัวตั้ง และตัวบวกมาตั้งให้บิตขวาสุดของแต่จำนวนตรงกัน ดังแสดงในตัวอย่าง
1 1 1 0 0
+ 1 1 0 0 1
?
เริ่มต้นบวกที่คอลัมน์ขวาสุด
1 1 1 0 0
+ 1 1 0 0 1
1
ต่อไปบวกคู่บิต ในคอลัมน์ที่ 2 และคอลัมน์ที่ 3
1 1 1 0 0
+ 1 1 0 0 1
1 0 1
ต่อไปบวกคู่บิต ในคอลัมน์ที่ 4 คือ 1 + 1 = 10 ใส่ 0 มีตัวทด 1 ให้วางตัวทดในตำแหน่งถัดไปที่สูงขึ้น
ตัวทด → 1
1 1 1 0 0
+ 1 1 0 0 1
0 1 0 1
ในคอลัมน์สุดท้ายจะต้องบวกกัน 3 บิต (รวมตัวทด) คือ 1 + 1 + 1 = 10 + 1 = 11
ตัวทด → 1
1 1 1 0 0
+ 1 1 0 1 0
1 1 0 1 0 1

การลบเลขฐานสอง
มีกฎพื้นฐานอยู่ 4 อย่าง สำหรับการลบเลขฐานสอง ดังนี้
0 – 0 = 0
0 – 0 = 1
1 – 1 = 0
10 – 1 = 1
รลบเลขฐานสองที่มีหลายบิต จะทำเช่นเดียวกับการบวก คือ จะเริ่มลบจากคอลัมน์ หรือบิตทางขวาก่อน (LSB) ไปจนถึงคอลัมน์ซ้ายสุด (MSB) ดังตัวอย่างต่อไปนี้
101 0 1
– 1 0 0 1 1
?
มลบจากคอลัมน์ขวาสุด (LSB)
1 0 0 1
– 1 0 0 1 1
0
เลขฐานสองแบบไม่มีเครื่องหมาย
บางครั้งข้อมูลที่เป็นจำนวนค่าตัวเลข จะคำนึงถึงเฉพาะขนาด หรือแมกนิจูด (magnitude) อย่างเดียว จะไม่สนใจเครื่องหมายบวก ( + ) หรือลบ ( – ) ตัวอย่างเช่น เลขฐานสองขนาด 8 บิต จะมีขนาด ตั้งแต่น้อยที่สุด คือ 0000 0000 ไปจนถึงขนาดมากที่สุดคือ 1111 1111 หรือถ้าเป็นเลขฐานสิบหก จะเริ่มตั้งแต่ 00H ถึง FFH และถ้าเป็นเลขฐานสิบ ก็คือ 0 ถึง 255
จำนวนที่แสดงเฉพาะขนาด เราเรียกว่า จำนวนแบบไม่มีเครื่องหมาย ถ้าเป็นเลขฐานสอง ก็จะเป็นเลขฐานแบบไม่มีเครื่องหมาย บิตทุกบิตบนจำนวนนั้นจะเป็นค่าน้ำหนัก ซึ่งเทียบได้กับเลขฐานสิบทุกบิต แต่เราก็สามารถที่จะทำการบวกหรือลบได้ตามปกติ
ในไมโครคอมพิวเตอร์ยุคแรกจะสามารถประมวลผลได้ครั้งละ 8 บิต ดังนั้นขนาดของผลลัพธ์ที่ได้ก็จะต้องอยู่ระหว่าง 0 ถึง 255 แต่ถ้าต้องการขนาดที่มากกว่า 255 จะต้องใช้เลขฐานสองขนาด 16 บิต ซึ่งหมายถึงการประมวลผลต้องทำ 2 ครั้ง คือ ทำ 8 บิตต่ำ (lower byte) ก่อนแล้วไปทำ 8 บิตสูง (upper byte) ดังแสดงในตัวอย่างที่ 7.4
การบวกเลขฐานสองขนาด 8 บิต ถ้าผลบวกมีค่ามากกว่า 255 เราเรียกว่า โอเวอร์โฟลว์ (overflow) ซึ่งจะเกิดตัวทดในคอลัมน์ที่ 9 ในระบบไมโครโปรเซสเซอร์จะมีวงจรที่จะแจ้งเตือนเรียกว่า แฟลกตัวทด (carry flag) เมื่อมีตัวทดเกิดขึ้น ผลลัพธ์ที่ได้จะไม่ถูกต้อง

เลขฐานสองที่มีเครื่องหมาย
ในเลขฐานสิบที่มีเครื่องหมายติดลบ จะเขียนเครื่องหมายลบไว้ข้างหน้าของขนาดตัวเลข เช่น –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
ตัวเลขดังกล่าวประกอบด้วยบิตเครื่องหมาย และตามด้วยกลุ่มบิตที่แสดงขนาดของตัวเลข เราจะเรียกข้อมูลที่มีรูปแบบดังกล่าวนี้ว่า เลขฐานสองชนิดบอกเครื่องหมาย – ขนาด หรือ Sign – magnitude ดังตัวอย่างข้อมูลที่ถูกเปลี่ยนให้เป็นเลขฐานสองชนิดบอกเครื่องหมาย ดังต่อไปนี้
+5 → 0000 0101
–5 → 1000 0101
+128 → 0000 0000 1000 0000
–128 → 1000 0000 1000 0000

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

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