這可以從各大R6RS方案實現的浮動,從而提取尾數和指數:
V = FXB^E
的F - 尾數
b - 基
ë - 指數方案:只使用R6RS,我怎麼確定flonum的尾數和指數
例如:3.14 = 0.785×2^2
如果它不支持,我想訪問flonum的(IEEE 754)位直接接近提取上述值的問題,但我沒有發現fu將flonum轉換爲一系列字節(bytevector)。
謝謝。
這可以從各大R6RS方案實現的浮動,從而提取尾數和指數:
V = FXB^E
的F - 尾數
b - 基
ë - 指數方案:只使用R6RS,我怎麼確定flonum的尾數和指數
例如:3.14 = 0.785×2^2
如果它不支持,我想訪問flonum的(IEEE 754)位直接接近提取上述值的問題,但我沒有發現fu將flonum轉換爲一系列字節(bytevector)。
謝謝。
http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-3.html#node_sec_2.8
- 程序:bytevector-IEEE雙原生設置! BYTEVECTOR K X
- 過程:bytevector-ieee-double-set! BYTEVECTOR K X ENDIANNESSK,...,K + 7必須是BYTEVECTOR的有效索引。
對於`BYTEVECTOR-IEEE-DOUBLE-NATIVE-SET!」,K必須是8
這些程序存儲X的IEEE 754雙精度表示的倍數爲元素幼兒園到K + 7的BYTEVECTOR,並返回未指定的值。
這在使用中:
> (define bv (make-bytevector 8)) > (bytevector-ieee-double-native-set! bv 0 1.0) > bv #vu8(0 0 0 0 0 0 240 63)
要驗證的結果,在此可以直接訪問字節的C程序:
#include <stdio.h>
int main(void)
{
double x = 1.0;
unsigned char *p = &x;
for (size_t i = 0; i < sizeof(double); i++)
printf("%u ", p[i]);
puts("");
return 0;
}
0 0 0 0 0 0 240 63
哦,可能我被'set'弄糊塗了。謝謝。 :] –
好的,球拍,雞, Ikarus的特定功能也會這樣做。唉.. –
我很震驚,Scheme沒有看到適合提供754推薦(並在修訂標準中要求)'logb'操作。 –