322 162 Introduction to Computer Organization and Architecture Episode 3 Numbers Representation การแทนข้อมูลตัวเลข
หัวข้อเรื่อง ระบบเลขฐาน (Base Numbers) ฐานสอง,ฐานแปด,ฐานสิบ,ฐานสิบหก,การแปลงค่า การแทนข้อมูลตัวอักขระ (Character Representation) BCD, EBCDIC, ASCII, Uni-code การแทนข้อมูลตัวเลข (Number Representation) Fixed-point, Floating-point
วัตถุประสงค์การเรียนรู้ อธิบาย แทนค่าและเปรียบเทียบค่าในการเข้ารหัสของเลขฐานสอง ฐานสิบและฐานสิบหกได้ หลักการแทนข้อมูลตัวอักขระไม่น้อยกว่า 3 แบบ หลักการแทนค่าข้อมูลตัวเลขทั้งแบบจุดตรึงและแบบจุดลอยตัวได้ เปรียบเทียบค่าตัวเลขที่แทนค่าในแบบจุดตรึงและแบบจุดลอยตัวได้
เอกสารอ้างอิง Hamacher, V. Carl and others Computer Organization 4th ed. New York : McGraw-Hill, 1996. P.257 - 301. Hayes, John P. Computer Architecture and Organization 3rd ed. Malaysia:McGraw-Hill, 1998. P.160 - 178, P.223 - 302.
เอกสารอ้างอิง Stallings, William Computer Organization and Architecture : designing for performance 5th ed. NewJersey : Prentice-Hall, 2000. P.269 - 312.
เอกสารอ้างอิง Schneider, G. Michael and others Computer Organization and Assembly Language Programming for the VAX John Wiley&Sons, 1987. P.15 - 86.
Numeric Representation Fixed-point Numbers Unsigned Binary Sign-Magnitude Complementation Packed Decimal
เลขยกกำลังของสอง 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1,024 211 = 2,048 212 = 4,096 213 = 8,192 27 = 128 28 = 256 29 = 512 210=K=1,024 215= 32,768 220=M=1,048,576 230=G=1,073,741,824
Unsigned Binary ใช้เลขฐานสองแทนค่าเลขจำนวนเต็มโดยตรง เมื่อ n = จำนวนบิตข้อมูลที่แทนค่า ค่าที่แทนได้จะอยู่ในช่วง 0 - (2n-1) . . . Bit No. n-1 n-2 3 2 1
ถ้าใช้ 8 บิตในการแทนค่า (N = 8) ตัวอย่างการแทนค่า ถ้าใช้ 8 บิตในการแทนค่า (N = 8) 0 แทนด้วย 0000 0000 27 26 25 24 23 22 21 20 18 แทนด้วย 0001 0010 1 1 27 26 25 24 23 22 21 20 18
ถ้าใช้ 8 บิตในการแทนค่า (N = 8) ตัวอย่างการแทนค่า ถ้าใช้ 8 บิตในการแทนค่า (N = 8) 0 แทนด้วย 0000 0000 18 แทนด้วย 0001 0010 129 แทนด้วย 1000 0001 27 21. 255 แทนด้วย 1111 1111
แทนค่าเลขจำนวนเต็มพร้อมเครื่องหมาย Sign-Magnitude แทนค่าเลขจำนวนเต็มพร้อมเครื่องหมาย ค่าที่แทนค่าได้อยู่ในช่วง - (2n-1-1) ถึง + (2n-1-1) . . . Bit No. n-2 3 2 1 = 0 มีค่าเป็น บวก = 1 มีค่าเป็น ลบ Sign Bit
ถ้าใช้ 8 บิตในการแทนค่า (N = 8) ตัวอย่างการแทนค่า ถ้าใช้ 8 บิตในการแทนค่า (N = 8) +18 แทนด้วย 0001 0010 1 1 27 26 25 24 23 22 21 20 24 21 18 +
ถ้าใช้ 8 บิตในการแทนค่า (N = 8) ตัวอย่างการแทนค่า ถ้าใช้ 8 บิตในการแทนค่า (N = 8) -18 แทนด้วย 1001 0010 1 1 1 27 26 25 24 23 22 21 20 24 21 18 -
ถ้าใช้ 8 บิตในการแทนค่า (N = 8) ตัวอย่างการแทนค่า ถ้าใช้ 8 บิตในการแทนค่า (N = 8) +18 แทนด้วย 0001 0010 -18 แทนด้วย 1001 0010 +65 แทนด้วย 0100 0001 -65 แทนด้วย 1100 0001 +127 แทนด้วย 0111 1111 -127 แทนด้วย 1111 1111
ปัญหาการแทนค่า + 0 กับ - 0 + 0 แทนด้วย 0000 0000 - 0 แทนด้วย 1000 0000
ที่นิยมนำมาใช้งาน ได้แก่ Complementation ที่นิยมนำมาใช้งาน ได้แก่ 1’s Complements 2’s Complements
เป็นการลบค่าออกจาก 2n -1 (n = data-bits) 1’s Complements เป็นการลบค่าออกจาก 2n -1 (n = data-bits) n = 4 จะได้ว่า ค่าเต็มเป็น 1111 2n - 1 = 24 - 1 = 16 - 1 = 15 1’s Complements ของ 0011 คือ 1 1 1 1 0 0 1 1 1 1 0 0 ค่าสูงสุดที่แทนค่าได้ของเลขสี่หลัก ค่าตัวเลขบวกที่ต้องการหาเลขลบ ค่าตัวเลขลบที่ได้โดยวิธี 1’s Complement
โดยการเปลี่ยนเลขจาก 0 --> 1, 1 --> 0 ทุกๆ บิต ดังตัวอย่าง 1’s Complements ค่าที่แทนค่าได้อยู่ในช่วง - (2n-1-1) ถึง + (2n-1-1) โดยการเปลี่ยนเลขจาก 0 --> 1, 1 --> 0 ทุกๆ บิต ดังตัวอย่าง +18 = 0001 0010 --> -18 = 1110 1101 +65 = 0100 0001 --> -65 = 1011 1110
ต้องการหาค่า 1’s Complement ของ -18 1’s Complements +18 = 0001 0010 24 21 . ต้องการหาค่า 1’s Complement ของ -18 +18 = 0 0 0 1 0 0 1 0 -18 1 1 1 1 1 1 +18 = 0001 0010 --> -18 = 1110 1101
ต้องการหาค่า 1’s Complement ของ -65 1’s Complements +65 = 0100 0001 26 21 . ต้องการหาค่า 1’s Complement ของ -65 +65 = 0 1 0 0 0 0 0 1 -65 1 1 1 1 1 +65 = 0100 0001 --> -65 = 1011 1110
ปัญหาการแทนค่า + 0 กับ - 0 + 0 แทนด้วย 0000 0000 - 0 แทนด้วย 1111 1111
2’s Complements เป็นการลบค่าออกจาก 2n (n = data-bits) (หา 1’s Complements ก่อนแล้วบวกเพิ่มอีก 1) จะได้ว่า ค่าเต็มเป็น 10000 = 24 n = 4 2n = 24 = 1610 = 100002 2’s Complements ของ 0011 คือ 1 0 0 0 0 0 0 1 1 1 1 0 1
2’s Complements ค่าที่แทนค่าได้อยู่ในช่วง - (2n-1) ถึง + (2n-1-1) มีวิธีการหาค่า 2 วิธี นำไปลบออกจาก 2n โดยตรง โดยการหา 1’s Complements ก่อน (เปลี่ยนเลขจาก 0 --> 1, 1 --> 0 ทุกๆ บิต) แล้วบวกเพิ่มอีก 1
ต้องการหาค่า 1’s Complement ของ -18 2’s Complements ต้องการหาค่า 1’s Complement ของ -18 +18 = 0 0 0 1 0 0 1 0 1 1 1 1 1 1 + 1 -18 1 1 1 1 1 1 +18 = 0001 0010 --> -18 = 1110 1110
ถ้าใช้ 4 บิตในการแทนค่า (N = 4) ตัวอย่างการแทนค่า ถ้าใช้ 4 บิตในการแทนค่า (N = 4) Figure & Table Table of Comparison
ใช้ 4 บิตในการแทนค่าเลขฐานสิบ 1 หลัก Packed Decimal ใช้ 4 บิตในการแทนค่าเลขฐานสิบ 1 หลัก 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 5 0110 = 6 0111 = 7 1000 = 8 1001 = 9 ใช้อีก 4 บิตแทนค่าเครื่องหมาย เช่น VAX 1100 แทน บวก และ 1011 แทน ลบ
ตัวอย่างการแทนค่า -56710 แทนด้วย +95,32410 แทนด้วย 0101 0110 0111 1011 -56710 แทนด้วย 0101 0110 0111 1011 5 6 7 - +95,32410 แทนด้วย 1001 0101 0011 0010 0100 1100 9 5 3 2 4 +
เครื่อง IBM System 360-370 Series กรณีตัวอย่าง เครื่อง IBM System 360-370 Series Figure Intel-Pentium II Figure
Floating-point Numbers หัวข้อเรื่อง Floating-point Numbers Single Precision Double Precision Extended Format
Floating-Point Numbers ใช้วิธีให้ตำแหน่งของจุดทศนิยมเคลื่อนที่ไป-มาได้ (Floating of Binary Point) เช่น การแทนค่าเลขทศนิยมฐานสิบ -1.0341 X 102 -7.3000 X 10-14 6.0247 X 1023 6.6254 X 10-27 เลขที่มีนัยสำคัญ 5 หลัก (Significant Digits)
Floating-Point Numbers ส่วนตัวเลข 1023, 10-27, 102, 10-14 เรียกว่า Scale Factor ซึ่งจะเป็นตัวกำหนดจุดทศนิยม ลองเขียนใหม่ (Normalized) เป็น -0.10341 X 103 -0.73000 X 10-13 0.60247 X 1024 0.66254 X 10-26 X1X2X3X4X5X6X7 X 10+/-Y1Y2
Floating-Point Numbers แบ่งประเภทการแทนค่าเป็น Single Precision Double Precision และ/หรือ Extended
Floating-Point Numbers การเขียนตัวเลข แบ่งออกเป็น 3 ส่วน ส่วนทศนิยม (Fraction or Mantissa) ส่วนเลขชี้กำลัง (Biased Exponent) ส่วนเครื่องหมาย (Sign Bit) S Exponent Fraction
The Institue of Electrical and Electronic Engineers IEEE 754 The Institue of Electrical and Electronic Engineers กำหนดมาตรฐานการแทนค่าข้อมูลตัวเลข Floating-Point Numbers ไว้ดังต่อไปนี้ Figure Figure Figure
+/- 0.1 bbb . . . b x 2+/-E ตัวอย่าง รูปแบบการแทนค่า Sign Bit กำหนดให้เป็น Bit แรกนำหน้าสุด Bit แรกสุดของส่วน Significant จะเป็น 1 เสมอ แล้วจึงค่อยตามด้วยค่า Bit อื่นๆ Biased Exponent ต้องเป็นค่าในรูปของ E’ = E + 2n-1 เสมอ
จากภาพ 6.23a, b Figure ค่าเลขชี้กำลัง มีค่า E’ = E + 12710 ดังนั้น E = E’ - 12710 โดยที่ E’ มีค่าอยู่ระหว่าง 010 ถึง 25510 จึงได้ว่า E มีค่าระหว่าง -12610 ถึง 12710 ซึ่งมีค่าประมาณ 10+/-38 ส่วน Mantissa มีค่าประมาณ 7 หลัก10
ส่วน Mantissa มีค่าประมาณ 16 หลัก10 จากภาพ 6.23c จะได้ค่า E’ มีค่าอยู่ระหว่าง 010 ถึง 2,04710 หรือ E มีค่าอยู่ระหว่าง -1,02210 ถึง 1,02310 ซึ่งประมาณ 10+/-308 ส่วน Mantissa มีค่าประมาณ 16 หลัก10 Figure
Normalized Formats การแปลงให้อยู่ในรูปแบบของ Normalized ภาพ 6.24 (a) Un-normalized Value ไม่มี 1 นำหน้าชุดของ Binary Point ค่าที่แทนได้คือ +0.0010110 . . . X 29 Figure ภาพ 6.24 (b) Normalized Value ค่าที่แทนได้คือ +1.0110 . . . X 26 Figure
Exceptions เป็นเหตุการณ์ที่เกิดจากการคำนวณแล้ว ส่งผลให้เกิดสัญญาณ Interruption ไปแจ้งต่อ CPU ว่าเกิดสิ่งใดขึ้น ?
Exception Types Division by Zero Overflow Underflow การนำตัวเลขทศนิยมมาคำนวณ มีโอกาสเกิด Exceptions ได้ 4 แบบ Invalid Operation Division by Zero Overflow Underflow
สั่งให้หาค่า Square Root ของเลขลบ Invalid Operation สั่งให้หาค่า Square Root ของเลขลบ
Division by Zero สั่งให้หารด้วยศูนย์
Overflow ผลลัพธ์จากการคำนวณมีจำนวนบิตเกินขนาดที่เครื่องจะแทนค่าได้ เช่น ทำให้ Exponent มากกว่า +12710 ใน Single Precision ที่ผ่านการ Normalized แล้ว
Underflow ผลลัพธ์การคำนวณได้ Exponent น้อยกว่า -12610 ใน Single Precision ที่ผ่านการ Normalized แล้ว
ขอบเขตการแทนค่า การแทนค่าแบบ Floating-point นั้น มีขีดความสามารถในการแทนค่าใน เชิงวิเคราะห์ดังนี้ Figure Figure