2009-03-12 46 views
10

Một người bạn & Tôi đang tranh luận về cách thức của Inf và NaN được lưu trữ trong bữa ăn trưa ngày hôm nay.Đại diện bên trong của inf và NaN là gì?

Lấy Fortran 90 chẳng hạn. Thực tế 4 byte có thể thu được giá trị của Inf hoặc NaN. Làm thế nào điều này được lưu trữ trong nội bộ? Có lẽ, một thực 4 byte là một số được biểu diễn bên trong bằng một số nhị phân 32 chữ số. Inf's và NaN có được lưu trữ dưới dạng số nhị phân 33 bit không?

Trả lời

20

Cụ thể từ Pesto của link:

IEEE đơn chính xác nổi điểm đại diện tiêu chuẩn đòi hỏi một từ 32 bit, có thể được biểu diễn dưới dạng đánh số 0-31, trái sang phải. Bit đầu tiên là bit dấu, S, tám bit tiếp theo là các bit số mũ, 'E', và 23 bit cuối cùng là phần 'F':

 
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF 
0 1  8 9     31 

Giá trị V đại diện bởi các từ có thể được xác định như sau:

  • Nếu E=255F là khác không, sau đó V=NaN ("Không phải là một con số")
  • Nếu E=255F là zero và S1, sau đó V=-Infinity
  • Nếu E=255F là zero và S0, sau đó V=Infinity
  • Nếu 0<E<255 sau đó V=(-1)**S * 2 ** (E-127) * (1.F) nơi "1.F" được thiết kế để đại diện cho số nhị phân tạo ra bằng cách đặt trước F với một tiềm ẩn dẫn 1 và điểm nhị phân .
  • Nếu E=0F không khác, thì V=(-1)**S * 2 ** (-126) * (0.F) Giá trị "không được chuẩn hóa" này là "không chuẩn hóa".
  • Nếu E=0F là zero và S1, sau đó V=-0
  • Nếu E=0F là zero và S0, sau đó V=0
9

Hầu hết các biểu diễn điểm động dựa trên tiêu chuẩn IEEE, có set patterns được xác định cho Inf và NaN.

+2

Link là bị hỏng. – 0xbe5077ed

Các vấn đề liên quan