Java中的任意精度数据类型

Java中的任意精度数据类型,java,floating-point,embedded,cpu,cpu-architecture,Java,Floating Point,Embedded,Cpu,Cpu Architecture,假设我的架构支持IEEE 754。这意味着我将有24b的单精度和53b的双精度。现在假设在我的程序中,我想使用任意精度-假设我想精度小于24b,这样我的计算速度就会加快。我看无论如何我都做不到,因为我的硬件根本不支持它。比如说在Java中,有可能这样做吗 如果没有,那么嵌入式计算机如何支持这些呢?它们的计算能力明显较低,因此需要较低的精度。Java JVM规范非常清楚地规定了数字必须如何处理。请解释你想做什么,因为(对我来说)你不清楚你需要知道什么。正如金伯利所说,JLS精确定义了计算的方式。您

假设我的架构支持IEEE 754。这意味着我将有24b的单精度和53b的双精度。现在假设在我的程序中,我想使用任意精度-假设我想精度小于24b,这样我的计算速度就会加快。我看无论如何我都做不到,因为我的硬件根本不支持它。比如说在Java中,有可能这样做吗


如果没有,那么嵌入式计算机如何支持这些呢?它们的计算能力明显较低,因此需要较低的精度。

Java JVM规范非常清楚地规定了数字必须如何处理。请解释你想做什么,因为(对我来说)你不清楚你需要知道什么。正如金伯利所说,JLS精确定义了计算的方式。您可以使用自定义格式用整数模拟精度较低的FP。这在所有主流架构上都会比较慢,因为它们都支持FP硬件。我想使用任意精度-假设我希望精度小于24b,以便在什么硬件上加快计算速度?大多数CPU ISA不直接支持16位浮点运算,即使支持16位浮点运算,也只能从SIMD中获得加速(相同向量宽度(字节)的元素数是原来的两倍)。一些CPU(例如某些x86)在加载和存储时可以通过在32位和16位浮点之间转换来节省内存带宽,但这并不会使加载后的计算速度更快。如果他们支持16b浮动,为什么计算速度不会更快?精度较低,不应该更快吗?您可以编写一组本机方法来对数据类型执行基本操作,并使用JNI调用它们,但我不确定它是否会比使用常规数学更快。如果您想要快速代码,首先不要使用java。