ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยBente Laursen ได้เปลี่ยน 5 ปีที่แล้ว
1
Data storage II Introduction to Computer Science ( )
2
การแทนนข้อมูลด้วยเลขฐานสองในรูปแบบต่างๆ
1. จำนวน 1.1 จำนวนเต็ม จำนวนธรรมชาติ N (unsigned = ไม่ มีเครื่องหมาย) จำนวนเต็ม Z (signed = มี เครื่องหมาย) 1.2 จำนวนจริง R 2. ตัวอักขระ (character) 3. ภาพ 4. เสียง
3
จุดประสงค์การเรียนรู้
การจัดเก็บจำนวนเต็มในระบบ Excess Notation การจัดเก็บจำนวนจริงในระบบ Floating Point Number
4
การจัดเก็บจำนวนเต็มในระบบ Excess Notation
5
การจัดเก็บจำนวนเต็มในระบบ Excess Notation
ใช้จำนวนบิตคงที่ เริ่มต้นด้วยการกำหนดจำนวนบิตที่ ต้องการ เรียกว่า Excess-n Notation (ระบบ ส่วนเกิน n) n = 2จำนวนบิต-1
6
พิสัยของ Excess-n Notation
Excess-n Notation (ระบบส่วนเกิน n) n = 2จำนวนบิต-1 พิสัยแบบมีเครื่องหมายคือ -2 จำนวนบิต -1 ถึง 2 จำนวนบิต ตัวอย่าง Excess-4 Notation มีจำนวนบิตเท่ากับ 3 เนื่องจาก 4 = 2จำนวนบิต-1 = 23- 1 ดังนั้น พิสัยเท่ากับ -4 ถึง 3 เนื่องจาก ถึง
7
พิสัยของ Excess-n Notation
ตัวอย่าง Excess-32 Notation มีจำนวนบิตเท่ากับ 6 เนื่องจาก 32 = 2 จำนวนบิต-1 = 26-1 ดังนั้นพิสัยเท่ากับ -32 ถึง 31 เนื่องจาก ถึง
8
การจัดเก็บจำนวนเต็มในระบบ Excess Notation
เขียนรูปแบบของบิตโดยเริ่มต้นจากศูนย์ และเพิ่มค่าทีละหนึ่งจนถึงค่าสูงสุด รูปแบบของบิตที่มีนัยสำคัญสูงสุด เป็น 0 ใช้แทนจำนวนลบ เป็น 1 ใช้แทนจำนวนบวก
9
ระบบ Excess-4 Notation ตัวอย่างที่ 1 ระบบ Excess-4 Notation
4 = 23-1 ดังนั้นจำนวนบิต คือ 3 เนื่องจากพิสัยแบบมีเครื่องหมาย -2 จำนวนบิต -1 ถึง 2 จำนวนบิต -1 -1 ดังนั้นมีพิสัยอยู่ในช่วง -4 ถึง 3
10
ระบบ Excess-4 Notation หากนำค่าฐานสิบระบบ Excess-4 บวก ด้วยค่าคงที่ 4 จะได้ค่าฐานสิบในระบบ เลขฐานสอง จึงเรียกว่าระบบส่วนเกิน 4
11
ระบบ Excess-8 Notation ตัวอย่างที่ 2 ระบบ Excess-8 Notation
8 = 24-1 ดังนั้นจำนวนบิต คือ 4 เนื่องจากพิสัยแบบมีเครื่องหมาย -2 จำนวนบิต -1 ถึง 2 จำนวนบิต -1 -1 ดังนั้นมีพิสัยอยู่ในช่วง -8 ถึง 7
12
ระบบ Excess-8 Notation หากนำค่าฐานสิบระบบ Excess-8 บวก ด้วยค่าคงที่ 8 จะได้ค่าฐานสิบในระบบ เลขฐานสอง จึงเรียกว่าระบบส่วนเกิน 8
13
การแปลงเลขฐานสองในระบบ Excess-n notation เป็นเลขฐานสิบ
14
Excess-4 notation (ฐานสองเป็นฐานสิบ)
ค่าฐานสิบ (ระบบฐานสอง) – 4 เช่น 1102 (Excess-4 notation) = ?10 หาได้จาก = 2 ดังนั้น 1102 (Excess-4 notation) = 210
15
Excess-4 notation (ฐานสองเป็นฐานสิบ)
ตัวอย่าง 1112 (Excess-4 notation) = ?10 หาได้จาก = 3 ดังนั้น 1112 (Excess-4 notation) = 310 0012 (Excess-4 notation) = ?10 หาได้จาก = -3 ดังนั้น 0012 (Excess-4 notation) = -310 1012 (Excess-4 notation) = ?10 หาได้จาก = 1 ดังนั้น 1012 (Excess-4 notation) = 110
16
Excess-8 notation (ฐานสองเป็นฐานสิบ)
ค่าฐานสิบ (ระบบฐานสอง)– 8 เช่น (Excess-8 notation) = ?10 หาได้จาก = 5 ดังนั้น (Excess-8 notation) = 510
17
Excess-8 notation (ฐานสองเป็นฐานสิบ)
ตัวอย่าง 01112 (Excess-8 notation) = ?10 หาได้จาก = -1 ดังนั้น (Excess-8 notation) = -110 10112 (Excess-8 notation) = ?10 หาได้จาก = 3 ดังนั้น (Excess-8 notation) = 310 10002 (Excess-8 notation) = ?10 หาได้จาก = 0 ดังนั้น (Excess-8 notation) = 010= 010
18
Excess-16 notation (ฐานสองเป็นฐานสิบ)
ค่าฐานสิบ (ระบบฐานสอง) – 16 เช่น (Excess-16 notation) = ?10 หาได้จาก = 9 ดังนั้น (Excess-16 notation) = 910
19
Excess-16 notation (ฐานสองเป็นฐานสิบ)
หาได้จาก = -5 ดังนั้น (Excess-16 notation) = -510 (Excess-16 notation) = ?10 หาได้จาก = 5 ดังนั้น (Excess-16 notation) = 510 (Excess-16 notation) = ?10 หาได้จาก = 0 ดังนั้น (Excess-16 notation) = 010
20
Excess-n notation (ฐานสองเป็นฐานสิบ)
21
การแปลงเลขฐานสิบ เป็น เลขฐานสองในระบบ Excess-n notation
22
Excess-4 notation (ฐานสิบเป็นฐานสอง)
23
Excess-4 notation (ฐานสิบเป็นฐานสอง)
ตัวอย่าง 310 = ?2(Excess-4 notation) หาได้จาก = 710 = 1112 ดังนั้น 310 = 1112 (Excess-4 notation) -310 = ?2(Excess-4 notation) หาได้จาก = 110 = 0012 ดังนั้น -310 = 0012 (Excess-4 notation) 110 = ?2(Excess-4 notation) หาได้จาก = 510 = 1012 ดังนั้น 110 = 1012 (Excess-4 notation)
24
Excess-8 notation (ฐานสิบเป็นฐานสอง)
หาได้จาก ค่าฐานสิบ (Excess-8) + 8 แล้วแปลงเป็นฐานสอง เช่น 510 = ?2(Excess-8 notation) หาได้จาก = 13 = 11012 ดังนั้น 510 = (Excess-8 notation)
25
Excess-8 notation (ฐานสิบเป็นฐานสอง)
ตัวอย่าง -110 = ?2(Excess-8 notation) หาได้จาก (-1) + 8 = 7 = 01112 ดังนั้น -110 = (Excess-8 notation) 310 = ?2(Excess-8 notation) หาได้จาก = 11 = 10112 ดังนั้น 310 = (Excess-8 notation) 010 = ?2(Excess-8 notation) หาได้จาก = 8 = 10002 ดังนั้น 010 = (Excess-8 notation)
26
Excess-16 notation (ฐานสิบเป็นฐานสอง)
หาได้จาก = 25 = ดังนั้น 910 = (Excess-16 notation)
27
Excess-16 notation (ฐานสิบเป็นฐานสอง)
หาได้จาก = 11 = ดังนั้น -510= (Excess-16 notation) 1310 = ?2(Excess-16 notation) หาได้จาก = 29 = ดังนั้น 1310= (Excess-16 notation) 010 = ?2(Excess-16 notation) หาได้จาก = 16 = ดังนั้น 1610= (Excess-16 notation)
28
Excess-n notation (ฐานสิบเป็นฐานสอง)
29
การจัดเก็บจำนวนจริงในระบบ Floating point number
30
จำนวนจริงในระบบ Floating point number
ในปัจจุบันเครื่องคอมพิวเตอร์ส่วนใหญ่ จัดเก็บจำนวนจริงตามมาตรฐาน IEEE 754 ข้อมูลชนิด single precision เช่น ข้อมูล ชนิด float (32 บิต) ข้อมูลชนิด double precision เช่น ข้อมูล ชนิด double (64 บิต) ใช้เรียนมีขนาด 8 บิต เรียกว่า Microfloat ใช้เป็นตัวอย่างในการศึกษาเท่านั้น เพื่อให้ เข้าใจได้ง่ายไม่มีมาตรฐานใดๆรองรับ
31
จำนวนจริงในระบบ Floating point number
ใช้หลักการเดียวกับตัวเลขทางวิทยาศาสตร์ (Science notation) มาตรฐาน (Normal form) ในการเขียนจะมี ตัวเลขหน้าจุด 1 ตัวและต้องไม่ใช่ศูนย์ เช่น 1.0 x 103 x 1023 1.2 x 10-6 -3.45 x 102
32
จำนวนจริงในระบบ Floating point number
สิ่งที่ควรจัดเก็บในคอมพิวเตอร์คือ เลขยก กำลัง และ ตัวเลขด้านหน้า เช่น 6.45 x 103 เลขยกกำลังคือ 3 เรียกว่า exponent ตัวเลขด้านหน้า คือ 6.45 เรียกว่า significand หรือ mantissa
33
จำนวนจริงในระบบ Floating point number
Exponent (เลขยกกำลัง) เป็นได้ทั้ง บวกและลบ Significand (ตัวเลขด้านหน้า) เป็นได้ทั้งบวกและลบ
34
รูปแบบการจัดเก็บ Floating point number
Sign bit (บิตเครื่องหมาย) แทนจำนวนบวก 1 แทนจำนวนลบ Biased exponent (กำลังในระบบ Excess-n Notation) Significand
35
Biased exponent Biased exponent หรือเลขยกกำลัง
เป็นจำนวนเต็ม ชนิดมีเครื่องหมาย (สามารถ เป็นได้ทั้งบวกและลบ) จะใช้วิธีการแทนด้วยระบบ Excess-n Notation ตัวอย่าง เลขฐานสอง (excess-4 notation) เริ่มจาก จำนวนลบที่น้อยที่สุด คือ 000 เพิ่มขึ้นทีละหนึ่งเรื่อยๆจนถึงจำนวนบวกมาก ที่สุด แต่เลขฐานสอง (2’complement) การ ปรับค่าระหว่างจำนวนลบและจำนวนบวกนั่น ทำได้ยาก ดังนั้นเลขยกกำลัง (exponent) จึงใช้ ระบบ Excess-n Notation ในการแทน เรียกว่า Biased exponent
36
Biased exponent
37
Microfloat ข้อมูลชนิด Microfloat คือจำนวนจริงที่จัดเก็บด้วย ระบบ Floating point number ที่ใช้ในการศึกษา ซึ่ง มีขนาด 8 บิต ตัวอย่าง บิตที่มีนัยสำคัญสูงสุดเป็น 0 แสดงว่าเป็นจำนวน บวก Biased exponent เป็น 110 Significand เป็น 1011
38
การแปลงจำนวนจริงฐานสิบ เป็น Microfloat ฐานสอง
39
ตัวอย่างที่ 1 4.510 Microfloat2 ขั้นตอนที่ 1 แปลง จำนวนจริง10 เป็น จำนวนจริง2 410 = แปลงเป็นฐานสองได้ .5 x 2 = 1.00 เก็บ 1 .0 x 2 = 0.00 หยุด เรียงผลคูณหน้าจุดจากบนลงล่าง จะ ได้ = 0.12 ดังนั้น =
40
ตัวอย่างที่ 1 ขั้นตอนที่ 2 จัดให้อยู่ในรูป normal form โดยตัวเลขหลังจุดตัวแรกต้องเป็น 1 และ ไม่มีเลขตัวหน้าจุด (เป็นศูนย์) จาก 100.1 10.01 x 21 1.001 x 22 .1001 x 23 เป็น normal form แล้ว ดังนั้น significand คือ 1001 exponent คือ 3
41
ตัวอย่างที่ 1 ขั้นตอนที่ 3 แปลง exponent เป็น biased exponent (excess-4 notation) exponent คือ 310 แปลง เป็น biased exponent โดย = 7 และ 710 = 1112 ดั้งนั้น biased exponent คือ 1112
42
ตัวอย่างที่ 1 สรุป เนื่องจาก เป็นจำนวนบวก ฉะนั้นบิต เครื่องหมายคือ 0 biased exponent คือ 111 significand คือ 1001 ดังนั้น = (Microfloat)
43
ตัวอย่างที่ 2 0.7510 Microfloat2
ขั้นตอนที่ 1 แปลง จำนวนจริง10 จำนวนจริง2 แปลงเป็นฐานสองได้ .75 x 2 = 1.50 เก็บ 1 .50 x 2 = 1.00 เก็บ 1 .00 x 2 = 0.00 หยุด เรียงผลคูณหน้าจุดจากบนลงล่าง จะ ได้ = 0.112 ดังนั้น = 0.112
44
ตัวอย่างที่ 2 ขั้นตอนที่ 2 จัดให้อยู่ในรูป normal form โดยตัวเลขหลังจุดตัวแรกต้องเป็น 1 และ ไม่มีเลขตัวหน้า (เป็นศูนย์) จาก 0.11 0.11 x 20 เป็น normal form แล้ว significand คือ 11 exponent คือ 0
45
ตัวอย่างที่ 2 ขั้นตอนที่ 3 แปลง exponent เป็น biased exponent (excess-4 notation) exponent คือ 0 แปลง เป็น biased exponent ได้จาก = 4 และ 410 = 1002 ดังนั้น biased exponent คือ 100
46
ตัวอย่างที่ 2 สรุป เนื่องจาก 0.7510 เป็นจำนวนบวก บิต เครื่องหมายคือ 0
biased exponent คือ 100 significand คือ 11 เติม 0 ทางด้านขวามือ ให้ครบ 4 บิต จะได้ significand คือ 1100 ดังนั้น = (microfloat)
47
ตัวอย่างที่ 3 -3.2510 Microfloat2
ขั้นตอนที่ 1 แปลง จำนวนจริง10 จำนวนจริง2 310 = 112 แปลงเป็นฐานสองได้ .25 x 2 = 0.50 เก็บ 0 .50 x 2 = 1.00 เก็บ 1 .00 x 2 = 0.00 หยุด เรียงผลคูณหน้าจุดจากบนลงล่าง จะได้ = ดังนั้น =
48
ตัวอย่างที่ 3 ขั้นตอนที่ 2 จัดให้อยู่ในรูป normal form โดยตัวเลขหลังจุดตัวแรกต้องเป็น 1 และ ไม่มีเลขตัวหน้า (เป็นศูนย์) จาก 1.101 x 21 .1101 x 22 x 22 เป็น normal form แล้ว significand คือ 1101 exponent คือ 2
49
ตัวอย่างที่ 3 ขั้นตอนที่ 3 แปลง exponent เป็น biased exponent (excess-4 notation) exponent คือ 2 แปลง เป็น biased exponent ได้จาก = 6 และ 610 = 1102 ดังนั้น biased exponent คือ 110
50
ตัวอย่างที่ 3 สรุป เนื่องจาก -3.2510 เป็นจำนวนลบ บิต เครื่องหมายคือ 1
biased exponent คือ 110 significand คือ 1101 ดังนั้น = (Microfloat)
51
ตัวอย่างที่ 4 -0.37510 Microfloat2
ขั้นตอนที่ 1 แปลง จำนวนจริง10 จำนวนจริง2 แปลงเป็นฐานสองได้ .375 x 2 = เก็บ 0 .75 x 2 = เก็บ 1 .50 x 2 = เก็บ 1 .00 x 2 = หยุด เรียงผลคูณหน้าจุดจากบนลงล่าง ดังนั้น =
52
ตัวอย่างที่ 4 ขั้นตอนที่ 2 จัดให้อยู่ในรูป normal form โดยตัวเลขหลังจุดตัวแรกต้องเป็น 1 และ ไม่มีเลขตัวหน้า (เป็นศูนย์) จาก 0.011 0.11 x 2-1 เป็น normal form แล้ว significand คือ 11 exponent คือ -1
53
ตัวอย่างที่ 4 ขั้นตอนที่ 3 แปลง exponent เป็น biased exponent (excess-4 notation) exponent คือ -1 แปลง เป็น biased exponent ได้จาก (-1) + 4 = 3 และ 310 = 0112 ดังนั้น biased exponent คือ 011
54
ตัวอย่างที่ 4 สรุป เนื่องจาก -0.37510 เป็นจำนวนลบ บิต เครื่องหมายคือ 1
biased exponent คือ 011 significand คือ 11 เติม 0 ทางด้าน ขวามือให้ครบ 4 บิต ดังนั้น significand คือ 1100 ดังนั้น = (Microfloat)
55
ตัวอย่างที่ 5 -0.5410 Microfloat2
ขั้นตอนที่ 1 แปลง จำนวนจริง10 จำนวนจริง2 แปลงเป็นฐานสองได้ .54 x 2 = 1.08 เก็บ 1 .08 x 2 = 0.16 เก็บ 0 .16 x 2 = 0.32 เก็บ 0 .32 x 2 = 0.64 เก็บ 0 .64 x 2 = 1.28 เก็บ 1 .28 x 2 = 0.56 เก็บ 0 .56 x 2 = 1.12 เก็บ 1 … เรียงผลคูณหน้าจุดจากบนลงล่าง ดังนั้น ≈
56
ตัวอย่างที่ 5 ขั้นตอนที่ 2 จัดให้อยู่ในรูป normal form โดยตัวเลขหลังจุดตัวแรกต้องเป็น 1 และ ไม่มีเลขตัวหน้า (เป็นศูนย์) จาก x 20 เป็น normal form แล้ว significand คือ exponent คือ 0
57
ตัวอย่างที่ 5 ขั้นตอนที่ 3 แปลง exponent เป็น biased exponent (excess-4 notation) exponent คือ 0 แปลง เป็น biased exponent ได้จาก = 4 และ 410 = 1002 ดังนั้น biased exponent คือ 100
58
ตัวอย่างที่ 5 สรุป เนื่องจาก -0.5410 เป็นจำนวนลบ บิต เครื่องหมายคือ 1
biased exponent คือ 100 significand คือ แต่เนื่องจาก significand สามารถเก็บได้ 4 หลัก ดังนั้นจึงต้องตัดบิตทางด้านขวามือ ออกให้เหลือ 4 บิต จะได้ 1000 ดังนั้น = (Microfloat)
59
การแปลง Microfloat ฐานสอง เป็น จำนวนจริงฐานสิบ
60
ตัวอย่างที่ 1 011110012 (Microfloat) จำนวนจริง10
ขั้นตอนที่ 1 แยกองค์ประกอบ บิตเครื่องหมายเป็น 0 แสดงว่าเป็น จำนวนบวก biased exponent คือ 1112 significand คือ 10012
61
ตัวอย่างที่ 1 ขั้นตอนที่ 2 Biased exponent
exponent = biased exponent – 4 exponent = 7 - 4 exponent = 3 ดังนั้น exponent คือ 310
62
ตัวอย่างที่ 1 ขั้นตอนที่ 3 Significand significand คือ 10012
.1001 x 23 1.001 x 22 10.01 x 21 100.1 x 20 << หยุด จำนวนจริงฐานสอง คือ
63
ตัวอย่างที่ 1 ขั้นตอนที่ 4 แปลงจำนวนจริงฐาน2 จำนวนจริงฐาน10
ขั้นตอนที่ 4 แปลงจำนวนจริงฐาน2 จำนวนจริงฐาน10 100.12 จำนวนจริงฐาน10 ค่าหน้าจุด 1002 = 410 ค่าหลังจุด 1 x 0.5 = 0.510 ดังนั้น (Microfloat) = 4.510
64
ตัวอย่างที่ 2 101111002 (Microfloat) จำนวนจริง10
ขั้นตอนที่ 1 แยกองค์ประกอบ บิตเครื่องหมายเป็น 1 แสดงว่าเป็น จำนวนลบ biased exponent คือ 0112 significand คือ 11002
65
ตัวอย่างที่ 2 ขั้นตอนที่ 2 Biased exponent
exponent = biased exponent – 4 exponent = 3 - 4 exponent = -1 ดังนั้น exponent คือ -110
66
ตัวอย่างที่ 2 ขั้นตอนที่ 3 Significand significand คือ 11002
x 2-1 x 20 << หยุด จำนวนจริงฐานสอง คือ
67
ตัวอย่างที่ 2 ขั้นตอนที่ 4 แปลงจำนวนจริงฐาน2 จำนวนจริงฐาน10
ขั้นตอนที่ 4 แปลงจำนวนจริงฐาน2 จำนวนจริงฐาน10 จำนวนจริงฐาน10 ค่าหน้าจุด 02 = 010 ค่าหลังจุด (1 x 0.25) + (1 x 0.125) = เนื่องจาก บิตเครื่องหมายเป็น 1 ค่าที่ได้ จึงเป็นจำนวนลบ ดังนั้น (Microfloat) =
68
ตัวอย่างที่ 3 001011002(Microfloat) จำนวนจริง10
ขั้นตอนที่ 1 แยกองค์ประกอบ บิตเครื่องหมายเป็น 0 แสดงว่าเป็น จำนวนบวก biased exponent คือ 0102 significand คือ 11002
69
ตัวอย่างที่ 3 ขั้นตอนที่ 2 Biased exponent
exponent = biased exponent – 4 exponent = 2 - 4 exponent = -2 ดังนั้น exponent คือ -210
70
ตัวอย่างที่ 3 ขั้นตอนที่ 3 significand significand คือ 11002
x 2-2 x 2-1 x 20 << หยุด จำนวนจริงฐานสอง คือ
71
ตัวอย่างที่ 3 ขั้นตอนที่ 4 แปลงจำนวนจริงฐาน2 จำนวนจริงฐาน10
จำนวนจริงฐาน10 ค่าหน้าจุด 02 = 010 ค่าหลังจุด (1 x 0.125) + (1 x ) = เนื่องจาก บิตเครื่องหมายเป็น 0 ดังนั้นค่าที่ได้จึงเป็น จำนวนบวก ดังนั้น (Microfloat) =
72
FLOAT ข้อมูลชนิด float ในภาษา C มีขนาด 32 บิต บิตเครื่องหมาย 1 บิต
Biased exponent 8 บิต (excess 128 notation) Significand 23 บิต
73
Double ข้อมูลชนิด double ในภาษา C มีขนาด 64 บิต บิตเครื่องหมาย 1 บิต
Biased exponent 11 บิต (excess notation) Significand 52 บิต
74
ปัญหาของ floating point number
75
Truncation error ความผิดพลาดที่เกิดจากการตัดจำนวนบิต ส่วนเกิน
ตัวอย่าง 2.625 1. แปลงเป็นจำนวนจริงฐานสอง ได้ 2. จัดให้อยู่ในรูป normal form ได้ x 22 3. exponent คือ 2+4 = 6, biased exponent 610 = 1102 4. ดังนั้น = (floating point)
76
Truncation error เมื่อแปลง (floating point) เป็นจำนวนจริง ฐานสิบ 1. Sign bit = 0, biased exponent = 110, significant = 1010 2. biased exponent 110 = 6, exponent = 6-4 = 2 3. จาก x 22 จะได้ x 20 = 2.510 ****จะเห็นว่าค่าที่ได้ไม่เท่ากับค่าเดิม
77
Truncation error ทำให้เกิดปัญหากับการคำนวณเลขใน ระบบ floating point ขนาด 8 บิต เช่น = แต่จัดเก็บได้แค่ 2.5 เมื่อนำ = ก็จะเกิดปัญหาเช่นเดิม คือ เก็บได้แค่ 2.5
78
Truncation error จากตัวอย่างเดิม หากบวก ก่อน จะได้ 0.25 เมื่อแปลงเป็นจำนวนจริงฐานสองได้ 0.01 ซึ่งสามารถจัดเก็บในระบบ floating point 8 บิตได้ คือ จากนั้นนำ จะได้ 2.75 เมื่อแปลงเป็นจำนวนจริงฐานสองได้ ซึ่งสามารถจัดเก็บในระบบ floating point 8 บิตได้ คือ
79
Truncation error ดังนั้นในกรณีที่ต้องการความแม่นยำสูงใน การคำนวณตัวเลขในระบบ floating point ควรดำเนินการบวกค่าที่มีจำนวนน้อยเข้า กันก่อน จากนั้นจึงค่อยนำไปรวมเข้ากับ จำนวนขนาดใหญ่ ทำให้ช่วยลดความผิดพลาดในการคำนวณ ลงได้
80
การเท่ากันของ floating point number
ถ้าประกาศตัวแปร float x, y; If(x==y) โอกาสที่เงื่อนไขจะเป็นจริง น้อย เนื่องจากทั้ง 32 บิตจะต้อง เหมือนกันทุกบิต เพราะฉะนั้นในการเปรียบเทียบ เรา ต้องกำหนดให้ x กับ y ต่างกันแค่ไหนที่ เราจะยอมรับให้เป็นตัวเดียวกัน fabs(x-y) < ถือว่าเท่ากันแล้ว ขึ้นอยู่กับงานของเราว่าต้องการมาก น้อยแค่ไหน
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.