data storage ii - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf ·...

77
Data storage II Introduction to Computer Science (88612159)

Upload: others

Post on 04-Nov-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

Data storage II

Introduction to Computer Science(88612159)

Page 2: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

2/77

การแทนนข+อมูลด+วยเลขฐานสองในรูปแบบต;างๆ

1. จำนวน

1.1 จำนวนเต็ม

จำนวนธรรมชาติ N (unsigned = ไม;มีเครื่องหมาย)

จำนวนเต็ม Z (signed = มีเครื่องหมาย)

1.2 จำนวนจริง R

2. ตัวอักขระ (character)

3. ภาพ

4. เสียง

Page 3: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

3/77

จุดประสงค-การเรียนรู5

uการจัดเก็บจำนวนเต็มในระบบ Excess-n Notation

uการจัดเก็บจำนวนจริงในระบบ Floating Point Number

Page 4: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

การจัดเก็บจำนวนเต็มในระบบ Excess-n Notation

Page 5: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

5/77

การจัดเก็บจำนวนเต็มในระบบ Excess-n Notation

u การแทนจำนวนเต็มในระบบสDวนเกิน n

uใชGจำนวนบิตคงท่ี

uเร่ิมตGนดGวยการกำหนดจำนวนบิตท่ีตGองการ

uเรียกวDา Excess-n Notation (ระบบสDวนเกิน n)

n = 2จำนวนบิต-1

Page 6: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

6/77

พิสัยของ Excess-n Notation

u Excess-n Notation (ระบบส=วนเกิน n)

n = 2จำนวนบิต-1

u พิสัยแบบมีเครื่องหมายคือ -2 จำนวนบิต -1 ถึง 2 จำนวนบิต -1 -1

ตัวอย=าง

พิสัยของ Excess-4 Notation คือ

พิสัยของ Excess-32 Notation คือ

Page 7: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

7/77

การจัดเก็บจำนวนเต็มในระบบ Excess-n Notation

u การแทนจำนวนเต็มในระบบสCวนเกิน n (Excess-n Notation)

u เขียนรูปแบบของบิตโดยเริ่มตPนจากศูนยR และเพิ่มคCาทีละหนึ่งจนถึง

คCาสูงสุด

u รูปแบบของบิตท่ีมีนัยสำคัญสูงสุด

uเป[น 0 ใชPแทนจำนวนลบ

uเป[น 1 ใชPแทนจำนวนบวก

Page 8: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

8/77

ตัวอย)างท่ี 1u ระบบ Excess-4 Notation

u จำนวนบิต คือ 3u พิสัยอยู)ในช)วง -4 ถึง 3

ระบบ Excess-4 Notation

Page 9: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

9/77

ระบบ Excess-4 Notationu หากนำค;าฐานสิบระบบ Excess-4 บวกดAวยค;าคงท่ี 4 จะไดA

ค;าฐานสิบในระบบเลขฐานสอง จึงเรียกว;าระบบส;วนเกิน 4

Page 10: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

10/77

ตัวอย*างท่ี 2

u ระบบ Excess-8 Notation

u จำนวนบิต คือ 4

u พิสัยอยู*ในช*วง -8 ถึง 7

ระบบ Excess-8 Notation

Page 11: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

11/77

u หากนำค*าฐานสิบระบบ Excess-8 บวกด;วยค*าคงท่ี 8 จะได;ค*าฐานสิบในระบบเลขฐานสอง จึงเรียกว*าระบบส*วนเกิน 8

11

ระบบ Excess-8 Notation

Page 12: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

12/77

การแปลงเลขฐานสองในระบบ Excess-n notation

เปAนเลขฐานสิบ

Page 13: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

13/77

Excess-4 notation (ฐานสองเป;นฐานสิบ)

การแปลงเลขฐานสองในระบบ Excess-4 notation เป;น เลขฐานสิบ

หาไดIจาก

u คLาฐานสิบ (ระบบฐานสอง) – 4

u จงแปลง 1102 (Excess-4 notation) เป;นฐานสิบ

หาไดIจาก 6 - 4 = 2

ดังนั้น 1102 (Excess-4 notation) = 210

ตัวอยLาง

u 1112 (Excess-4 notation) = ?10

u 0012 (Excess-4 notation) = ?10

u 1012 (Excess-4 notation) = ?10

Page 14: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

14/77

Excess-8 notation (ฐานสองเป;นฐานสิบ)

การแปลงเลขฐานสองในระบบ Excess-8 notation เป;น เลขฐานสิบ

หาไดIจาก

u คLาฐานสิบ (ระบบฐานสอง)– 8

u จงแปลง 11012 (Excess-8 notation) เป;นฐานสิบ

หาไดIจาก 13 - 8 = 5

ดังนั้น 11012 (Excess-8 notation) = 510

ตัวอยLาง

u 01112 (Excess-8 notation) เป;นฐานสิบ

u 10112 (Excess-8 notation) เป;นฐานสิบ

u 10002 (Excess-8 notation) เป;นฐานสิบ

Page 15: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

15/77

Excess-16 notation (ฐานสองเป;นฐานสิบ)

การแปลงเลขฐานสองในระบบ Excess-16 notation เป;น เลขฐานสิบ หาไดIจาก

u คLาฐานสิบ (ระบบฐานสอง) – 16

u จงแปลง 110012 (Excess-16 notation) เป;นฐานสิบ

หาไดIจาก 25 - 16 = 9

ดังน้ัน 110012 (Excess-16 notation) = 910

ตัวอยLาง

u 010112 (Excess-16 notation) เป;นฐานสิบ

u 101012 (Excess-16 notation) เป;นฐานสิบ

u 100002 (Excess-16 notation) เป;นฐานสิบ

Page 16: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

16/77

Excess-n notation (ฐานสองเป:นฐานสิบ)

สรุป การแปลงเลขฐานสองในระบบ Excess-n notation เป:น เลขฐานสิบ หาไดIจาก

u คLาฐานสิบ (ระบบฐานสอง) – n

Page 17: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

17/77

การแปลงเลขฐานสิบเป2นเลขฐานสองในระบบ Excess-n notation

Page 18: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

18/77

Excess-4 notation (ฐานสิบเป;นฐานสอง)

การแปลงเลขฐานสิบเป;นเลขฐานสองในระบบ Excess-4 notation

หาไดIจาก

u คLาฐานสิบ + 4 แลIวแปลงเป;นฐานสอง

u จงแปลง 210 เป;นฐานสอง (Excess-4 notation)

ตัวอยLาง

u 310 เป;นฐานสอง (Excess-4 notation)

u -310 เป;นฐานสอง (Excess-4 notation)

u 110 เป;นฐานสอง (Excess-4 notation)

Page 19: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

19/77

การแปลงเลขฐานสิบเป3นเลขฐานสองในระบบ Excess-8 notation

หาไดGจาก

u คJาฐานสิบ + 8 แลGวแปลงเป3นฐานสอง

u จงแปลง 510 เป3นฐานสอง (Excess-8 notation)

ตัวอยJาง

u -110 เป3นฐานสอง (Excess-8 notation)

u 310 เป3นฐานสอง (Excess-8 notation)

u 010 เป3นฐานสอง (Excess-8 notation)

Excess-8 notation (ฐานสิบเป3นฐานสอง)

Page 20: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

20/77

การแปลงเลขฐานสิบเป3นเลขฐานสองในระบบ Excess-16 notation

หาไดHจาก

u คKาฐานสิบ + 16 แลHวแปลงเป3นฐานสอง

u จงแปลง 910 เป3นฐานสอง (Excess-16 notation)

ตัวอยKาง

u -510 เป3นฐานสอง (Excess-16 notation)

u 1310 เป3นฐานสอง (Excess-16 notation)

u 010 เป3นฐานสอง (Excess-16 notation)

Excess-16 notation (ฐานสิบเป3นฐานสอง)

Page 21: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

21/77

การแปลงเลขฐานสิบเป3นเลขฐานสองในระบบ Excess-n notation หาไดFจาก

u คIาฐานสิบ + n แลFวแปลงเป3นฐานสอง

Excess-n notation (ฐานสิบเป3นฐานสอง)

Page 22: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

การจัดเก็บจำนวนจริงในระบบFloating point number

Page 23: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

23/77

จำนวนจริงในระบบ Floating point number

u ในป?จจุบันเครื่องคอมพิวเตอรJสLวนใหญLจัดเก็บจำนวนจริงตาม

มาตรฐาน IEEE 754

u ขYอมูลชนิด single precision เชLน ขYอมูลชนิด float (32 บิต)

u ขYอมูลชนิด double precision เชLน ขYอมูลชนิด double (64 บิต)

u ใชYเรียนมีขนาด 8 บิต เรียกวLา Microfloat ใชYเปhนตัวอยLางใน

การศึกษาเทLานั้น เพื่อใหYเขYาใจไดYงLายไมLมีมาตรฐานใดๆรองรับ

Page 24: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

24/77

จำนวนจริงในระบบ Floating point number

u ใช?หลักการเดียวกับตัวเลขทางวิทยาศาสตรN (Science notation)

u มาตรฐาน (Normal form) ในการเขียนจะมีตัวเลขหน?าจุด 1 ตัวและต?องไม\ใช\ศูนยN

u เช\น 1.0 x 103

6.0235 x 1023

1.2 x 10-6

-3.45 x 102

Page 25: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

25/77

จำนวนจริงในระบบ Floating point number

u ส่ิงท่ีควรจัดเก็บในคอมพิวเตอรLคือ เลขยกกำลัง และ ตัวเลขดRานหนRา

u เชVน 6.45 x 103

u เลขยกกำลังคือ 3 เรียกวVา exponent

uตัวเลขดRานหนRา คือ 6.45 เรียกวVา significand หรือ mantissa

Page 26: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

26/77

จำนวนจริงในระบบ Floating point number

u ดังนั้นจำนวนจริงในระบบ Floating point number ท่ี

คอมพิวเตอรJจัดเก็บคือ

u Exponent (เลขยกกำลัง) เปVนไดXท้ังบวกและลบ

u Significand (ตัวเลขดXานหนXา) เปVนไดXท้ังบวกและลบ

Page 27: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

27/77

รูปแบบการจัดเก็บ Floating point number

u รูปแบบการจัดเก็บ Floating point number มี 3 สCวน คือ

u Sign bit (บิตเครื่องหมาย)

0 แทนจำนวนบวก

1 แทนจำนวนลบ

u Biased exponent (กำลังในระบบ Excess-n Notation)

u Significand

Page 28: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

28/77

Biased exponent

Biased exponent หรือเลขยกกำลัง

u เป>นจำนวนเต็ม ชนิดมีเครื่องหมาย (สามารถเป>นไดPท้ังบวกและลบ)

u จะใชPวิธีการแทนดPวยระบบ Excess-n Notation

u ตัวอย]าง เลขฐานสอง (excess-4 notation) เริ่มจาก จำนวนลบท่ี

นPอยท่ีสุด คือ 000 เพิ่มขึ้นทีละหนึ่งเรื่อยๆจนถึงจำนวนบวกมากท่ีสุด

แต]เลขฐานสอง (2’complement) การปรับค]าระหว]างจำนวนลบ

และจำนวนบวกนั่นทำไดPยาก

u ดังนั้นเลขยกกำลัง (exponent) จึงใชP ระบบ Excess-n Notation ใน

การแทน เรียกว]า Biased exponent

Page 29: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

29/77

Biased exponent

Page 30: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

30/77

Microfloat

u ข/อมูลชนิด Microfloat คือจำนวนจริงท่ีจัดเก็บด/วยระบบ Floating point

number ท่ีใช/ในการศึกษา ซึ่งมีขนาด 8 บิต

ตัวอยZาง 01101011

u บิตท่ีมีนัยสำคัญสูงสุดเป`น 0 แสดงวZาเป`นจำนวนบวก

u Biased exponent เป`น 110

u Significand เป`น 1011

Page 31: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

31/77

การแปลงจำนวนจริงฐานสิบเป5นจำนวนจริงฐานสอง (Microfloat)

Page 32: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

32/77

ตัวอย*างท่ี 1 จงแปลง 4.510 เป;นจำนวนจริงฐานสอง (Microfloat)

ขั้นตอนท่ี 1 แปลงจำนวนจริงฐานสิบเป;นจำนวนจริงสอง

410 = 1002

0.510 แปลงเป;นฐานสองไดS

.5 x 2 = 1.00 เก็บ 1

.0 x 2 = 0.00 หยุด

เรียงผลคูณหนSาจุดจากบนลงล*าง จะไดS 0.510 = 0.12

ดังนั้น 4.510 = 100.12

Page 33: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

33/77

ตัวอย)างท่ี 1

ขั้นตอนท่ี 2 จัดให9อยู)ในรูป normal form โดยตัวเลขหลังจุด

ตัวแรกต9องเปJน 1 และไม)มีเลขตัวหน9าจุด (เลขหน9าจุดเปJนศูนยP)

จาก 100.1

10.01 x 21

1.001 x 22

.1001 x 23 เปJน normal form แล9ว

u ดังนั้น significand คือ 1001

u exponent คือ 3

Page 34: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

34/77

ตัวอย*างท่ี 1

ขั้นตอนท่ี 3 แปลง exponent เป?น biased exponent (excess-4 notation)

u exponent คือ 310 แปลง เป?น biased exponent

โดย 3 + 4 = 7 และ 710 = 1112

u ดั้งนั้น biased exponent คือ 1112

Page 35: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

35/77

ตัวอย*างท่ี 1 สรุป

u เนื่องจาก 4.510 เป>นจำนวนบวก ฉะนั้นบิตเครื่องหมายคือ 0

u biased exponent คือ 111

u significand คือ 1001

u ดังนั้น 4.510 = 011110012 (Microfloat)

Page 36: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

36/77

ตัวอย*างท่ี 2

จงแปลง 0.7510 เป;นจำนวนจริงฐานสอง (Microfloat)

ขั้นตอนท่ี 1 แปลงจำนวนจริงฐานสิบเป;นจำนวนจริงสอง

Page 37: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

37/77

ตัวอย)างท่ี 2

ขั้นตอนท่ี 2 จัดให8อยู)ในรูป normal form โดยตัวเลขหลังจุด

ตัวแรกต8องเปIน 1 และไม)มีเลขตัวหน8า (หน8าจุดเปIนศูนยP)

Page 38: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

38/77

ตัวอย*างท่ี 2 ขั้นตอนท่ี 3 แปลง exponent เป?น biased exponent (excess-4 notation)

Page 39: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

39/77

ตัวอย*างท่ี 2

สรุป

u เนื่องจาก 0.7510 เป?นจำนวนบวก บิตเครื่องหมายคือ

u biased exponent คือ

u significand คือ

u ดังนั้น 0.7510 =

Page 40: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

40/77

ตัวอย*างท่ี 3

จงแปลง -3.2510

เป<นจำนวนจริงฐานสอง (Microfloat)

ขั้นตอนท่ี 1 แปลงจำนวนจริงฐานสิบเป<นจำนวนจริงสอง

Page 41: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

41/77

ตัวอย*างท่ี 3

ขั้นตอนท่ี 2 จัดให:อยู*ในรูป normal form โดยตัวเลขหลังจุด

ตัวแรกต:องเปKน 1 และไม*มีเลขตัวหน:า (หน:าจุดเปKนศูนยQ)

Page 42: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

42/77

ตัวอย*างท่ี 3 ขั้นตอนท่ี 3 แปลง exponent เป?น biased exponent (excess-4 notation)

Page 43: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

43/77

ตัวอย*างท่ี 3

สรุป

u เนื่องจาก -3.2510 เป@นจำนวนลบ บิตเครื่องหมายคือ

u biased exponent คือ

u significand คือ

u ดังนั้น -3.2510 =

Page 44: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

44/77

ตัวอย)างท่ี 4

จงแปลง -0.37510 เป;นจำนวนจริงฐานสอง (Microfloat)

ขั้นตอนท่ี 1 แปลงจำนวนจริงฐานสิบเป;นจำนวนจริงสอง

Page 45: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

45/77

ตัวอย*างท่ี 4

ขั้นตอนท่ี 2 จัดให9อยู*ในรูป normal form โดยตัวเลขหลังจุดตัวแรกต9องเปJน 1 และไม*มีเลขตัวหน9า (หน9าจุดเปJนศูนยQ)

Page 46: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

46/77

ตัวอย*างท่ี 4

ขั้นตอนท่ี 3 แปลง exponent เป?น biased exponent (excess-4 notation)

Page 47: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

47/77

ตัวอย)างท่ี 4

สรุป

u เนื่องจาก -0.37510 เป?นจำนวนลบ บิตเครื่องหมายคือ

u biased exponent คือ

u significand คือ

u ดังนั้น -0.37510 =

Page 48: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

48/77

ตัวอย*างท่ี 5 จงแปลง -0.5410 เป;นจำนวนจริงฐานสอง (Microfloat)

ขั้นตอนท่ี 1 แปลงจำนวนจริงฐานสิบเป;นจำนวนจริงสอง

Page 49: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

49/77

ตัวอย*างท่ี 5

ขั้นตอนท่ี 2 จัดให:อยู*ในรูป normal form โดยตัวเลขหลังจุด

ตัวแรกต:องเปKน 1 และไม*มีเลขตัวหน:า (หน:าจุดเปKนศูนยR)

Page 50: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

50/77

ตัวอย*างท่ี 5 ขั้นตอนท่ี 3 แปลง exponent เป?น biased exponent (excess-4 notation)

Page 51: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

51/77

ตัวอย*างท่ี 5

สรุป

u เนื่องจาก -0.5410 เป>นจำนวนลบ บิตเครื่องหมายคือ

u biased exponent คือ

u significand คือ

u ดังนั้น -0.5410 =

Page 52: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

52/77

การแปลงจำนวนจริงฐานสอง (Microfloat )เปAน จำนวนจริงฐานสิบ

Page 53: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

53/77

ตัวอย*างท่ี 1

จงแปลง 011110012

(Microfloat) เปDนจำนวนจริงฐานสิบ

ขั้นตอนท่ี 1 แยกองคPประกอบ

u บิตเครื่องหมายเปDน 0 แสดงว*าเปDนจำนวนบวก

u biased exponent คือ 1112

u significand คือ 10012

Page 54: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

54/77

ตัวอย*างท่ี 1

ขั้นตอนท่ี 2 Biased exponent

u biased exponent คือ 1112 = 710 (จำนวนเต็มไม*มีเครื่องหมาย)

u exponent = biased exponent – 4

exponent = 7 - 4

exponent = 3

u ดังนั้น exponent คือ 310

Page 55: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

55/77

ตัวอย)างท่ี 1ขั้นตอนท่ี 3 Significandu Significand คือ 10012

.1001 x 23

1.001 x 22

10.01 x 21

100.1 x 20 << หยุดu จำนวนจริงฐานสอง คือ 100.12

Page 56: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

56/77

ตัวอย*างท่ี 1

ขั้นตอนท่ี 4 แปลงจำนวนจริงฐานสองเป@นจำนวนจริงฐานสิบ

100.12à จำนวนจริงฐาน

10

u ค*าหนGาจุด 1002

= 410

u ค*าหลังจุด 1 x 0.5 = 0.510

u ดังนั้น 011110012

(Microfloat) = 4.510

Page 57: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

57/77

ตัวอย)างท่ี 2

จงแปลง 101111002 (Microfloat) เปCนจำนวนจริงฐานสิบ

ขั้นตอนท่ี 1 แยกองคOประกอบ

u บิตเครื่องหมาย

u biased exponent คือ

u significand คือ

Page 58: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

58/77

ตัวอย*างท่ี 2ขั้นตอนท่ี 2 Biased exponent

Page 59: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

59/77

ตัวอย*างท่ี 2

ขั้นตอนท่ี 3 Significand

Page 60: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

60/77

ตัวอย*างท่ี 2

ขั้นตอนท่ี 4 แปลงจำนวนจริงฐานสองเป@นจำนวนจริงฐานสิบ

Page 61: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

61/77

ตัวอย*างท่ี 3

จงแปลง 001011002(Microfloat) เปDนจำนวนจริงฐานสิบ

ขั้นตอนท่ี 1 แยกองคPประกอบ

Page 62: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

62/77

ตัวอย*างท่ี 3ขั้นตอนท่ี 2 Biased exponent

Page 63: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

63/77

ตัวอย*างท่ี 3ขั้นตอนท่ี 3 significand

Page 64: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

64/77

ตัวอย*างท่ี 3

ขั้นตอนท่ี 4 แปลงจำนวนจริงฐานสองเป?นจำนวนจริงฐานสิบ

Page 65: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

65/77

ตัวอย*างท่ี 4

จงแปลง 110010002 (Microfloat) เปEนจำนวนจริงฐานสิบ

ขั้นตอนท่ี 1 แยกองคQประกอบ

Page 66: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

66/77

ตัวอย)างท่ี 4ขั้นตอนท่ี 2 Biased exponent

Page 67: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

67/77

ตัวอย)างท่ี 4ขั้นตอนท่ี 3 significand

Page 68: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

68/77

ตัวอย*างท่ี 4

ขั้นตอนท่ี 4 แปลงจำนวนจริงฐานสองเป?นจำนวนจริงฐานสิบ

Page 69: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

69/77

FLOAT

u ข+อมูลชนิด float ในภาษา JAVA มีขนาด 32 บิต

u บิตเครื่องหมาย 1 บิต

u Biased exponent 8 บิต (excess 128 notation)

u Significand 23 บิต

Page 70: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

70/77

Double

u ข+อมูลชนิด double ในภาษา JAVA มีขนาด 64 บิต

u บิตเครื่องหมาย 1 บิต

u Biased exponent 11 บิต (excess 1024 notation)

u Significand 52 บิต

Page 71: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

ป"ญหาของ floating point number

Page 72: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

72/77

Truncation error

ความผิดพลาดท่ีเกิดจากการตัดจำนวนบิตสEวนเกิน

u ตัวอยEาง 2.625

1. แปลงเปOนจำนวนจริงฐานสอง ไดR 10.101

2. จัดใหRอยูEในรูป normal form ไดR 0.10101 x 22

3. exponent คือ 2+4 = 6, biased exponent 610

= 1102

4. ดังนั้น 2.625 = 011010102(floating point)

Page 73: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

73/77

Truncation error

u เม่ือแปลง 011010102(floating point) เปAนจำนวนจริงฐานสิบ

1. Sign bit = 0, biased exponent = 110, significant = 1010

2. biased exponent 110 = 6, exponent = 6-4 = 2

3. จาก 0.1010 x 22 จะได[ 10.10 x 20

4. 10.102 = 2.510

****จะเห็นว`าค̀าท่ีได[ไม̀เท̀ากับค̀าเดิม

Page 74: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

74/77

Truncation error

ทำให3เกิดป9ญหากับการคำนวณเลขในระบบ floating point

ขนาด 8 บิต เชMน

2.50 + 0.125 + 0.125

2.50 + 0.125 = 2.625

แตMจัดเก็บได3แคM 2.5

เม่ือนำ 2.5 + 0.125 = 2.625

ก็จะเกิดป9ญหาเชMนเดิม คือ เก็บได3แคM 2.5

Page 75: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

75/77

Truncation error

จากตัวอย7างเดิม 2.50 + 0.125 + 0.125

หากบวก 0.125 + 0.125 ก7อน จะไดG 0.25

เม่ือแปลงเปMนจำนวนจริงฐานสองไดG 0.01

ซึ่งสามารถจัดเก็บในระบบ floating point 8 บิตไดG คือ 01011000

จากนั้นนำ 0.25 + 2.50 จะไดG 2.75

เม่ือแปลงเปMนจำนวนจริงฐานสองไดG 10.11

ซึ่งสามารถจัดเก็บในระบบ floating point 8 บิตไดG คือ 01101011

Page 76: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

76/77

Truncation error

u ดังนั้นในกรณีท่ีต<องการความแมCนยำสูงในการคำนวณตัวเลขใน

ระบบ floating point ควรดำเนินการบวกคCาท่ีมีจำนวนน<อยเข<า

กันกCอน จากนั้นจึงคCอยนำไปรวมเข<ากับจำนวนขนาดใหญC

u ทำให<ชCวยลดความผิดพลาดในการคำนวณลงได<

Page 77: Data storage II - staff.informatics.buu.ac.thjanya/88612159/lecture/lecture06.pdf · uเลขยกกำลังคือ 3เรียกวVา exponent uตัวเลขดRานหนRา

77/77

การเท(ากันของ floating point number

ถ>าประกาศตัวแปร double x, y;

u if(x==y) โอกาสท่ีเง่ือนไขจะเปTนจริงน>อย เนื่องจากท้ัง 64

บิตจะต>องเหมือนกันทุกบิต

u เพราะฉะนั้นในการเปรียบเทียบ เราต>องกำหนดให> x กับ y

ต(างกันแค(ไหนท่ีเราจะยอมรับให>เปTนตัวเดียวกัน

u if(Math.abs(x-y) < 0.0001) ถือว(าเท(ากันแล>ว ขึ้นอยู(กับ

งานของเราว(าต>องการมากน>อยแค(ไหน