View Single Post
Old 13-11-2008, 04:40 PM   #4
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Mình đã tìm trên mạng 1 tài liệu và nó đã chỉ cho cách thức giải quyết vấn đề trên như sau:
- Lấy 2 số fractional a1*a2 được kết quả là 1 số 32 bits.
- Nhân kết quả trên với 0x2
- Kết quả chính xác dạng fractional của phép nhân trên sẽ là 16 bits cao nhất của kết quả sau khi nhân với 0x2.
Ví dụ :
Code:
Ta có : a1=0.5 lưu theo dạng fractional là 0x4000
           b1=0.75 lưu theo dạng fractional là 0x6000
thực hiện a1 * b1 được kết quả 32bits =0x18000000
ta tiếp tục nhân kết quả đó với 0x2 được 0x30000000
và kết quả fractional của biểu thức a1*b1 là 3000 (chính là 0.375).
Với cách thực hiện này, ta sẽ giảm được "vô số" chu kỳ máy do các lệnh "ngốn" rất nhiều chu kỳ máy Fract2Float và Float2Fract gây ra.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn