floating point

2
 _________________________________________________Ph m Võ Tun Anh - MSSV:1020006  1  Khi s dng n bit để bi u di n 1 s nh   phâ n dướ i dng du ch m t ĩ n h, ta mt 1 bit cho s MSB, còn l i n-1 bit để  bi u di n giá tr   ca nó, mà v ớ i n-1 bit, ta đượ c giá tr   l ớ n nh t là , v y .  Khi s dng n bit để bi u di n 1 s nh   phâ n dướ i dng du ch m t ĩ nh , ta có th  bi u d i n đượ c  giá tr  , trong khi đó vớ i MSB=0 ta đã có  gi á tr   không âm ( t  0 đến ), như vy ta có th  bi u di n đượ c thêm  gi á tr   âm n a, v y .  Như v y ta đượ c:  (đpcm)  CÂU 2  Viết chương trình tính toán cng tr  nhân chia các s nh  phân dướ i dng du chm động và du chm tĩ nh (ý t ưở ng)  Vớ i phép cng  ca du ch m t ĩ nh, ta cn g t ng bit cùng đơ n v  ca 2 s nh   phâ n v ớ i nhau, có flag để làm b nh ớ . Để  ý r ng giá tr   ca bit C và f lag sau hoàn toàn ph  th u c vào t ng ca 2 bit A B và flag trước, như vy ta có th  dùng l nh switch khi ti ến hành cng t ng bit để đơn gi n hóa đi u ki n. Khi cn g l i t ng bit ca C, ta nh ân m i  bi t v ớ i bc t ương ng khi l y ra (nhân , i là bc ca bit t ương ng trong h  nh  phân, do ta nh  p l i u bng cơ s 10). Ví d: 1100 cng 1001 - L y ra 2 bit bc 0 r i cng v ớ i f l ag, 0+1+0=1, C(0)=1, f l ag=0, C=C+10^0=1 - L y ra 2 bit bc 1 r i cng v ớ i f l ag, 0+0+0= 0, C(1)=0, f l ag=0, C=C+0=1 - L y ra 2 bit bc 2 r i cng v ớ i f l ag, 1+0+0= 1, C(2)=1, f l ag=0, C=C+10^2=101 - L y ra 2 bit bc 3 r i cng v ớ i f l ag, 1+1+0 =2, C(3)=0, f l ag=1, C=C+0=101 - L y ra 2 bit bc 4 r i cng v ớ i f l ag, 0+0+1= 0, C(4)=1, f l ag=0, C=C+10^ 4=101 01 - K ết qu : 10101 Vớ i phép tr ừ , ta có B=2-B  v ớ i B là s đối ca B dướ i dng nh   phân , do đó A-B=A-(2-B)=A+B -2. Vy ta cng ph n giá tr   ca A v ớ i B l i , b đi s  1 ngoài cùng b ên trái , s au đó so sánh giá tr   tu y t đối ca 2 s A, B để quy ết đị nh giá tr   âm hay dương. Ví d: 1100 tr  1001 - Đối ca 1001 là (1)0111 - Cng 1100 v i 0111 (như trên), ta đượ c 10011 - B  s 1 n goài cùng bên trái, ta còn l i 0011 - So sánh 1100 và 1001 (đơn gi n vì đang nh p l i u bng cơ s 10), 1100 l n h ơ n  - K ết qu : (0)0011 Vớ i phép nhân , ta tách tng bit ca B, nhân bc t ương ng, r  i cng chúng l i v ớ i nhau. Chú ý khi có s âm thì ta ph i đổi v giá tr   tu y t đối ca nó, du ca k ết qu s l à t ng ca du ca 2 toán t  (bit) Ví d: 1100 nh ân 1001 CÂU 1 S dng n bit để bi u di n s  n h phân dướ i dng d u chm tĩnh, chng minh r ng giá tr  thp phân a ca s đượ c bi u di n nm trong đon:   bi t ca A bit ca B flag (ca 2  bi t trước đó)  bit ca C (k ết qu) flag (nh ớ  cho 2 bit li n sau)  0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

Upload: nhat-dat-dang

Post on 18-Jul-2015

66 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Floating Point

5/16/2018 Floating Point - slidepdf.com

http://slidepdf.com/reader/full/floating-point-55ab52849ca51 1/3

 

_________________________________________________Phạm Võ Tuấn Anh - MSSV:1020006

 

  Khi sử dụng n bit để biểu diễn 1 số nhị  phân dướ i dạng dấu chấm tĩnh, ta mất 1 bit cho số MSB, còn lại n-

biểu diễn giá trị của nó, mà vớ i n-1 bit, ta đượ c giá trị lớ n nhất là

, vậy

.  Khi sử dụng n bit để biểu diễn 1 số nhị  phân dướ i dạng dấu chấm tĩnh, ta có thể biểu diễn đượ c giá trị,

khi đó vớ i MSB=0 ta đã có giá trị không âm ( từ 0 đến ), như vậy ta có thể biểu diễn đượ c t

giá trị âm nữa, vậy .

 Như vậy ta đượ c:  (đpcm) 

CÂU 2 Viết chương trình tính toán cộng tr ừ nhân chia các số nhị phân dưới dạng dấu chấm động và dấu chấm tĩnh (ý tưở ng)

  Vớ i phép cộng của dấu chấm tĩnh, tacộng từng bit cùng đơn vị của 2 số nhị phân vớ i nhau, có flag để làm bộ nhớ .Để ý rằng giá trị của bit C và flag sau

hoàn toàn phụ thuộc vào tổng của 2 bit A

B và flag trước, như vậy ta có thể dùng

lệnh switch khi tiến hành cộng từng bit

để đơn giản hóa điều kiện.

Khi cộng lại từng bit của C, ta nhân mỗi

bit vớ i bậc tương ứng khi lấy ra (nhân , i là bậc của bit tương ứng trong hệ nhị phân, do ta nhập liệu bằsố 10).

Ví dụ: 1100 cộng 1001

- Lấy ra 2 bit bậc 0 rồi cộng vớ i flag, 0+1+0=1, C(0)=1, flag=0, C=C+10^0=1

- Lấy ra 2 bit bậc 1 rồi cộng vớ i flag, 0+0+0=0, C(1)=0, flag=0, C=C+0=1

- Lấy ra 2 bit bậc 2 rồi cộng vớ i flag, 1+0+0=1, C(2)=1, flag=0, C=C+10^2=101

- Lấy ra 2 bit bậc 3 rồi cộng vớ i flag, 1+1+0=2, C(3)=0, flag=1, C=C+0=101

- Lấy ra 2 bit bậc 4 rồi cộng vớ i flag, 0+0+1=0, C(4)=1, flag=0, C=C+10^4=10101

- Kết quả: 10101

Vớ i phép trừ , ta có B=2-B’ vớ i B’ là số đối của B dướ i dạng nhị  phân, do đó A-B=A-(2-B’)=A+B’-2.Vậy ta cộng phần giá trị của A vớ i B’ lại, bỏ đi số 1 ngoài cùng bên trái, sau đó so sánh giá trị tuyệt đối củA, B để quyết định giá trị âm hay dương. Ví dụ: 1100 trừ 1001

- Đối của 1001 là (1)0111

- Cộng 1100 với 0111 (như trên), ta đượ c 10011

- Bỏ số 1 ngoài cùng bên trái, ta còn lại 0011

- So sánh 1100 và 1001 (đơn giản vì đang nhập liệu bằng cơ số 10), 1100 lớn hơn 

- Kết quả: (0)0011

Vớ i phép nhân, ta tách từng bit của B, nhân bậc tương ứng, rồi cộng chúng lại vớ i nhau. Chú ý khi có số

ta phải đổi về giá trị tuyệt đối của nó, dấu của k ết quả sẽ là tổng của dấu của 2 toán tử (bit)Ví dụ: 1100 nhân 1001

CÂU 1Sử dụng n bit để biểu diễn số nhị phân dưới dạng dấu chấm tĩnh, chứng minh r ằng giá tr ị thập phân a của số được bdiễn nằm trong đoạn:

 

bit của A bit của Bflag (của 2

bit trước đó) bit của C

(k ết quả)

flag (

2 bit l

 

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

1 0 0 1 0

0 1 1 0 1

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Page 2: Floating Point

5/16/2018 Floating Point - slidepdf.com

http://slidepdf.com/reader/full/floating-point-55ab52849ca51 2/3

 

_________________________________________________Phạm Võ Tuấn Anh - MSSV:1020006

 

- Lấy bit bậc 0 của B là 1, đượ c B(0)=1100.10^0=1100

- Lấy bit bậc 1 của B là 0, đượ c B(1)=0.10^1

- Lấy bit bậc 2 của B là 0, đượ c B(2)=0.10^2

- Lấy bit bậc 3 của B là 1, đượ c B(3)=1100.10^3=1100000

- B(0)+B(1)+B(2)+B(3)=1101100

- Kết quả: 1101100

Vớ i phép chia, như đã biết, phép chia thực chất là 1 phép trừ chưa biết trướ c số lần thực hiện lặp lại, và d

khi số dư nhỏ hơn số bị chia. Ứ ng dụng tính chất này, ta sẽ thực hiện đượ c phép chia lấy phần nguyên

Ví dụ: 1001 chia 11

- Lấy 1001 trừ 11, đượ c 110, C=C+1=0+1=1, 110>=11, tiếp tục (C đang thực hiện phép cộng nhị phân)

- Lấy 110 trừ 11, đượ c 11, C=C+1=1+1=10, 11>=11, tiếp tục (hoặc nếu = thì dừng lại và C=C+1)

- Lấy 11 trừ 11, đượ c 0, C=C+1=10+1=11, 0<11, dừng lại

- Kết quả: 11

  Vớ i phép cộng của dấu chấm động, ta đưa 2 số về chung 1 số E, sau đó cộng 2 số F rồi thêm bớ t đơn vị v

chung cho phù hợ pVí dụ: 0 10000001 11 cộng 0 10000010 01

- Đưa về 0 10000010 0.111 và 0 10000010 1.01

- Cộng 0111 và 1010, ta đượ c 10001

- So vớ i F thì 10001 hơn 1010 1 bậc, ta đượ c E của k ết quả hơn  1 đơn vị so vớ i E chung

- Kết quả: 0 10000011 0001

Vớ i phép trừ , ta làm tương tự phép cộng nhưng lấy 2 số F trừ nhau, sau đó đổi về giá trị bù 2, thêm bớ t đơvào số E chung cho phù hợ pVí dụ: 0 10000001 11 cộng 1 10000010 01

- Đưa về 0 10000010 0.111 và 1 10000010 1.01

- Cộng (0)0111 và (1)1010, ta đượ c (1)101 = (1)11 (thu được điều này vì phép trừ 2 F ta thực hiện ở dạng

tĩnh, nhưng chấm động không lấy số đối theo nguyên tắc bù 2 nên phải đưa về giá trị gốc)

- So vớ i F thì (1)11 thua (1)1010 2 bậc, ta đượ c E của k ết quả thua 2 đơn vị so vớ i E chung

- Kết quả: 1 10000000 1

Vớ i phép nhân,, ta đưa 2 số về chung 1 số E, sau đó nhân 2 số F rồi thêm bớ t đơn vị vào số E chung cho

dấu của k ết quả sẽ là tổng của dấu của 2 toán tử (bit)

Ví dụ: 0 10000000 1 nhân 1 10000001 01

- Đưa về 0 10000001 0.11 và 1 10000001 1.01

- Nhân 011 và 101, ta đượ c 1111 (không cần quan tâm đến dấu)

- So với F thì 1111 hơn 101 1 bậc, ta đượ c E của k ết quả hơn 1 đơn vị so vớ i E chung- Kết quả: 1 10000010 111 (S = 0+1 =1)

Vớ i phép chia, ta đưa 2 số về chung 1 số E, sau đó chia 2 số F rồi thêm bớt đơn vị vào số E chung cho phù

Ví dụ: 0 10000010 111 chia 0 10000000 1

- Đưa về 0 10000010 1.111 và 0 10000010 0.011

- Chia 1111 cho 11, ta đượ c 101

- So vớ i F thì 101 thua 1111 1 bậc, ta đượ c E của k ết quả thua 1 đơn vị so vớ i E chung

- Kết quả: 0 10000001 01

Page 3: Floating Point

5/16/2018 Floating Point - slidepdf.com

http://slidepdf.com/reader/full/floating-point-55ab52849ca51 3/3