簡體   English   中英

除IEEE754之外,是否還有其他常用的浮點格式?

[英]Are there any commonly used floating point formats besides IEEE754?

我正在編寫一個封送處理層,以在不同域之間自動轉換值。 當涉及浮點值時,這可能意味着將值從一種浮點格式轉換為另一種。 但是,似乎幾乎每個現代系統都在使用IEEE754,因此我想知道是否值得推廣其他格式,或者僅管理不同IEEE754格式之間的封送處理。

有誰知道我應該考慮的除IEEE754之外的任何常用浮點格式(也許在ARM處理器或大型機上)? 如果是這樣,則對格式規范的引用將非常有幫助。

幾乎所有相對較新的(過去15年內)通用計算機都使用IEEE754。在極少數情況下,如果您發現需要支持的系統使用非IEEE 754浮點格式,則可能會有可用的庫與IEEE 754相互轉換。

第五代(2002年末)之前的一些非古老系統,其本機未使用IEEE 754,它們是Cray SV1(1998-2003)和IBM System 360、370和390。 IBM在2001年前后在用於先前S / 390硬件的軟件版本中實現了IEEE 754仿真

截至目前,您實際上希望該系統在什么系統上運行? 如果碰到一個不使用IEEE754的線路(就像@JohnZwinick所說的那樣,這種情況就幾乎消失了),那么您應該能夠對此進行編碼。

換句話說,實際上,您在這里設計的是一種通信協議,並且您顯然希望做出明智的選擇,以表示如何在浮點數中表示浮點數(我想是單精度和雙精度)。域之間傳輸的字節數。

我認為@SomeProgrammerDude試圖暗示將它們表示為文本字符串(在傳輸過程中)可能會提供最大的可移植性,如果可以的話,我同意,但這顯然不是最有效的方法。

因此,如果您確實決定像往常一樣將IEEE754作為交換格式,那么可能發生的最壞情況是您可能需要找到一種方法,將它們轉換為與您使用的某些老式體系結構所使用的本機格式之間的轉換。幾乎可以肯定,它們永遠都不會遇到,如果確實發生了,那么解決這個問題就不會困難

另外,浮點數和雙精度數可以是大端或小端,因此您需要確定要在字節流中使用的內容,並在必要時進行編組時進行轉換。 如今,小尾數(Little-endian)更常見,所以我會同意的。

有誰知道我應該考慮的除IEEE754以外的任何常用浮點格式?

  1. CCSI使用binary32的變體選擇處理器。

似乎幾乎每個現代系統都使用IEEE754,

  1. 是的,但是...各種實現對邊緣細節的偽造 ,例如次法線Visual Studio中的負零,無窮大和非數字

第二個問題更致命,更難辨認給定的實現已完全編碼IEEE754。 參見__STDC_IEC_559__

OP具有“我正在編寫封送處理層”。 正是在這種編碼中,邊緣情況仍然可能存在問題。 同樣,IEEE754沒有指定字節序,因此封送處理問題仍然存在。 調用整數字節序可能與FP字節序不匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM