如何在不使用 C# 中内置数学函数的情况下计算以 2 为底的对数?

2024-02-02

如何在不使用 C# 中内置数学函数的情况下计算以 2 为底的对数?

我在应用程序中重复使用 Math.Log 和 BigInteger.Log 数百万次,并且速度变得非常慢。

我对使用二进制操作来实现相同目的的替代方案感兴趣。请记住,我可以使用对数近似来帮助加快执行时间。


假设您只对对数的积分部分感兴趣,您可以这样做:

static int LogBase2(uint value)
{
    int log = 31;
    while (log >= 0)
    {
        uint mask = (1 << log);
        if ((mask & value) != 0)
            return (uint)log;
        log--;
    }
    return -1;
}

(请注意,0 的返回值是错误的;它应该是负无穷大,但整型数据类型没有这样的值,所以我返回 -1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不使用 C# 中内置数学函数的情况下计算以 2 为底的对数? 的相关文章

随机推荐

  • 模仿 msbuild 进程的程序集解析

    我正在编写一个验证工具 用于检查项目中引用的文件的版本 我想使用与 MSBuild 相同的解析过程 例如 Assembly Load 需要完全限定的程序集名称 然而 在项目文件中 我们可能只有 System Xml 之类的东西 MSBuil
  • 如何替换窗口中的文档?

    var newDoc document implementation createHTMLDocument someTitle swap newDoc with document DOMImplementation createHTMLDo
  • Java使用notepad++和nppexec编译运行

    请记住 在 Windows shell 中进行编译是有效的 因此此问题成为 PATH 问题的可能性很小 如果不是零 我花了很多时间研究如何做到这一点 我在网上找到的所有结果都表明你可以这样做 NPP SAVE javac FILE NAME
  • 使用 Elastic Beanstalk 部署 .NET 工作线程应用程序

    我正在使用 AWS 基础设施开发更广泛的 Web 应用程序 它有两个 工作 组件 从 SQS 读取工作并将结果写入 RDS 数据库 其中之一是 Python 我已经在单个 Elastic Beanstalk 实例上使用了它 第二个使用 NE
  • *** 检测到堆栈粉碎 ***:<未知> 终止中止(核心转储) 错误仅有时发生?

    我正在完成作业 因此我无法发布代码 并且很少出现此运行时错误 检测到堆栈粉碎 终止 中止 核心转储 当我再次运行可执行文件后 一切正常 是否有原因导致此错误仅有时出现 作为参考 我试图完成的作业要求我们将文件中的数据加载到两个向量中 并对数
  • AngularJS 和 Websocket

    我正在尝试学习 HTML5 Node js Express MongoDB AngularJS Websocket 的东西 这似乎让每个人现在都很兴奋 稍微适得其反的是 我实际上很难区分每种技术的实际用途 尤其是使用 ejs 作为模板引擎
  • 使用 if 条件更新 MySQL

    看来我有很大的问题条件查询 我必须做一个有条件更新 我在这里写下我想做的事情 IF SELECT tipo FROM abbonamento WHERE idU 17 punti THEN UDPATE abbonamento SET pu
  • 导出-导入 Android Studio AVD

    我一直在 Android Studio 中进行开发 并创建了许多适合我不同应用规范的 AVD 现在我计划在我的电脑上进行系统还原 有没有办法备份 AVD 然后在执行系统还原后将它们导入到新的 Android Studio 安装中 Thank
  • R 命令 dir.create 和 file.path

    我刚刚开始学习 r 并对课程中给出的以下问题感到困惑 使用 dir create 和 file path 在一个命令中在当前工作目录中创建一个名为 testdir2 的目录及其子目录 名为 testdir3 我无法让它接受我的答案 然后在网
  • jRails 替代方案

    你知道 jrails 的替代品吗 它或多或少已经过时了 使用 jQuery 1 5 现在 1 7 是当前版本 有人知道替代方案吗 Thanks EDIT 我知道如何单独使用jquery构建rails助手 但我喜欢rails助手 所以我不想单
  • 如何从文件描述符获取 FILE* 流?

    我们可以使用以下方法从 FILE 流中获取文件描述符fileno 功能 是否有一个函数可以从文件描述符获取 FILE 流而无需重新打开文件 FILE fdopen int fd const char mode See fdopen 3 但它
  • C# - 当应用程序使用另一种语言时,获取英语的异常消息?

    我正在尝试本地化我的程序 但我希望发送给开发人员的错误消息以英语显示 我一直无法找到一种方法来实现这一点 因为似乎如果在引发错误时将 UI 区域性设置为另一种语言 则会以该语言引发错误 由于这个程序不是我自己编写的 而且它很大 所以我认为在
  • 为什么我的网络浏览器在我点击链接时不发送 cookie,但在我输入 url 时却发送得很好

    我正在用 Golang HTML 创建一个 Web 应用程序 我正在实现注册 会话 电子邮件验证和登录 我的代码有效 但是我注意到一些奇怪的浏览器行为 当用户第一次注册时 我的应用程序将向他们发送一封电子邮件 其中包含一个链接 网址中带有唯
  • android中的service、intentService有什么区别? [复制]

    这个问题在这里已经有答案了 有什么区别Service and an IntentService在安卓中 有什么区别AsyncTask and an IntentService在安卓中 1 Service和IntentService的区别 S
  • MKMapView 不调用委托方法

    在 UIViewController 中 我将 MKMapView 添加到控制器控制的视图中 void viewDidLoad super viewDidLoad CGRect rect CGRectMake 0 0 460 320 map
  • DropDownList SelectedIndexChanged 事件未在 GridView HeaderTemplate 内触发

    我目前正在工作委员会网站上工作 特别是工作搜索页面 我正在将找到的工作返回到DataBound GridView 即gvwJobs 并且在HeaderTemplate我有一个DropDownList named ddlSortDirecti
  • 显示和隐藏 div jQuery

    我对这个结构有 HTML div class container div
  • 从 Java Android 代码访问 string.xml 资源文件

    如何访问其中的值res values string xml来自Android的资源文件Activity class 那么你可以使用 String getString R string app name 并且 您可以使用获取字符串数组 Str
  • Android 应用程序安装在我的 SD 卡中的什么位置

    我只想查看与我的手机中的应用程序之一关联的文件 尤其是 png 文件 该应用程序实际上安装 移动 在SD卡中 问题是 我在 SD 卡中找不到该应用程序 我正在使用名为 文件管理器 的文件浏览器来浏览 SD 卡 有人可以帮我解决这个问题吗 它
  • 如何在不使用 C# 中内置数学函数的情况下计算以 2 为底的对数?

    如何在不使用 C 中内置数学函数的情况下计算以 2 为底的对数 我在应用程序中重复使用 Math Log 和 BigInteger Log 数百万次 并且速度变得非常慢 我对使用二进制操作来实现相同目的的替代方案感兴趣 请记住 我可以使用对