`
micheal19840929
  • 浏览: 165186 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

J2ME中平方根算法

    博客分类:
  • J2ME
阅读更多

J2ME中,确切的是CLDC1.0/MIDP1.0乃至CLDC1.1/MIDP2.0中,没有开平方的函数(在J2SE中是通过java.lang.Math.sqrt()方法实现的)。但是在游戏数值平衡中,开平方是一个很基本的方式。在一次项目会议上,组员提出如何实现开方,我没加思索,提出采用逆向逼近法。但后来考虑这样的性能很低,在手机上如此宝贵的CPU资源不能就这样浪费了!于是考虑到采用实现手算开方法。在构思流程时突然意识到,同样算法在二进制下应该是可用的!经过验证,有了以下代码

public satic long sqrt(long x) {
    long y = 0;
    long b = (~Long.MAX_VALUE) >>> 1;
    while (b > 0) {
        if (x >= y + b) {
             x -= y + b;
             y >>= 1;
             y += b;
        } else {
             y >>= 1;
        } 
        b >>= 2;
   } 
    return y;
}

 

分享到:
评论

相关推荐

    j2me算法

    工作中的一些简单的算法积累,算法比较简单还望广大网友多多指点

    j2me中的SQRT开平方算法(演示程序)

    总的来说,J2ME中的SQRT开平方算法演示程序旨在教给开发者如何在移动设备上有效地计算平方根,这对于理解移动开发中的性能优化和算法设计有重要价值。通过阅读和分析源代码,我们可以学习到如何在资源受限的环境中...

    j2me 数学浮点运算源码

    在J2ME中,这些函数可能需要通过算法实现,因为标准的`Math`类可能不完全可用。 让我们深入探讨一下浮点运算在J2ME中的实现: 1. **浮点数表示**:J2ME中的浮点数通常使用单精度(float)而非双精度(double),...

    J2ME的模拟浮点数类库

    J2ME的模拟浮点数类库就是为了弥补这一不足,它提供了一套完整的数学函数,使得开发者能够在J2ME环境中进行复杂的浮点数计算。 首先,我们要理解浮点数在计算机科学中的重要性。浮点数用于表示实数,广泛应用于科学...

    J2ME经验总结之sqrt开方函数(查表法)

    本文将深入探讨如何在J2ME环境中使用查表法实现sqrt开方函数。 查表法的基本思想是预先计算好一部分常用数值的平方根,存储在一个数组中。当需要计算平方根时,通过查找预计算好的表来快速得到结果。这种方式在效率...

    J2me初级计算器

    在移动设备和嵌入式系统中,J2ME(Java Micro Edition)是一个常见的开发平台,用于构建轻量级应用程序,如我们的“J2ME初级计算器”。这个计算器设计得相对简单,但包含了对基本数学运算的支持,特别是对开N次方和...

    j2me的一些工具类

    在J2ME开发中,工具类(Utility Class)是一种常见的编程模式,它们通常包含静态方法,用于执行特定的任务,如字符串处理、日期时间操作、网络通信辅助等。以下是一些可能在压缩包中的工具类及其可能包含的功能: 1...

    mathfp_2_0_5.zip_floating

    在J2ME中,浮点运算主要通过`java.lang.Math`类来实现,这个类包含了各种数学函数,如平方根、指数、对数等。然而,由于J2ME的限制,这些函数并不总是直接可用,特别是对于一些低级别的硬件平台。在这种情况下,`...

    mathFp(已反编译出源码)

    `MathFp.java`类包含了丰富的数学函数,如平方根、指数、对数、三角函数等,这些都是科学计算中常见的操作。通过反编译源码,我们可以看到这些函数的实现细节。MathFp库采用了一些优化策略,比如使用位操作和移位...

    数学函数查询

    因此,在性能敏感的代码中,有时需要使用特定优化的库或算法来替代标准库中的函数。 此外,理解和掌握这些函数的性质,如它们的周期性、奇偶性和单调性,对于编写高效且正确的代码至关重要。例如,当处理角度时,...

    Java手机计算器源码.rar

    该程序的核心部分是计算逻辑,这部分涉及到计算机科学中的基础算法和数据结构。计算器的基本功能包括加、减、乘、除以及可能的其他高级运算,如求平方根、百分比计算等。这些运算的实现需要精确的数学算法和错误处理...

    Algorithms.for.Programmers - ideas.and.source.code.Draft.Oct.2008

    探讨了反向二进制排列的概念,这种排列方式在某些特定算法中可以显著提升性能。 #### 2.2 基数排列 介绍了基数排列的原理,它在处理大规模数据集时能有效降低时间复杂度。 #### 2.3 就地矩阵转置 提出了一种在不...

Global site tag (gtag.js) - Google Analytics