负整数返回零

2024-02-25

一位朋友只是抛出了一些类似于以下 C# 代码的代码:

int i = ...;
return i < 0 ? 0 : i;

这让我思考。有什么“不同”的方式来返回负整数零或当前正值?更具体地说,如果可能的话,我正在寻找按位运算。

顺便说一句,我知道Math.Max(0, i);


出了什么问题Math.Max?

You can使用按位运算在没有分支的情况下执行等效操作:

r = x ^ ((x ^ y) & -(x < y)); // == max(x, y)

如果你替换零,它会折叠为:

r = (y & -(0 < y)); // == max(0, y)

(来源:这个清单 http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax按位技巧。)

如果分支在你的平台上非常昂贵,我想这在某些内部循环中可能是值得的,但它非常晦涩,不是我想在外部遇到的那种事情。极其时间敏感函数。

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

负整数返回零 的相关文章

随机推荐

  • alloca 函数崩溃,但 malloc 正常

    请解释一下崩溃的原因 我的第 3 方代码意外崩溃并出现 EXC BAD ACCESS static int overwrite selector struct srm target srm MARFileRemoverProgressBlo
  • 启动 SQLWorkbench/J 时出现“无法加载 Java 运行时环境”

    I get Unable to load Java Runtime Environment开始时SQLWorkbenchJ app https www sql workbench eu 我使用的是 macOS Catalina 10 15
  • 在 React JS 的回调中使用自定义钩子

    我有这个自定义钩子 const useSomething gt const displayAlert text gt alert text return displayAlert 现在我想在我的代码中的某个地方使用它 如下所示 const
  • 如何使请求绑定的数据在 Ktor 中全局可用?

    我正在 Ktor 中构建微服务 当我们在应用程序模块中工作时 Ktor 提供对call包含授权数据的对象 我的问题是我需要访问call来自服务级别类的对象 在 Spring 中 您可以通过访问SecurityContext这是全球可用的Th
  • 如何在CKeditor中添加音频标签

    我已经添加了html5audio插件并能够获取上传按钮 但如何将上传的文件发送到服务器 这是我的插件代码 id Upload hidden false filebrowser uploadButton label editor lang h
  • Bash 脚本在 Linux 中将 pdf 打印为 pdf

    这个问题可能听起来有点奇怪 但实际任务相对简单 我发誓 我使用 PDFCreator 将生成的 FDF 合并到预先存在的 PDF 中 从 Web 表单自动生成一些 PDF 我在 NitroPDF 中创建了预先存在的 PDF 此设置有效gre
  • 如何使用 Ruby 和 eventmachine 进行日志记录?

    我正在使用 Ruby 和 Eventmachine 库编写一个应用程序 我真的很喜欢非阻塞 I O 和事件驱动系统的想法 我遇到的问题是日志记录 我正在使用 Ruby 的标准记录器库 这并不是说日志记录需要永远进行 但它似乎不应该被阻止 但
  • TestNG - 将自定义属性添加到@Test注释

    我需要向现有的 Test 注释添加自定义属性 如下所示 Test description some description newAttribute some value public void testMethod unit integr
  • WordPress 从 get_the_tag_list 中排除标签

    当我使用自定义模板标签输出单个帖子标签时 如何从标签列表中排除已定义的标签名称 好吧 没有过滤器可以删除其中的术语get the tag list但在内部它要求get the terms所以你可以在那里添加过滤器 考虑这个例子 add fi
  • 无法找到或加载 Qt 平台插件“windows”

    首先 为了防止重复报告 我尝试了多种解决方案here https stackoverflow com questions 17366967 failed to load platform plugin windows available p
  • 运行时错误无法解析 GoogleMap 的所有参数:(?, ?)

    我正在尝试将基本地图加载到我的模板上 我只是按照这个说明操作https ionicframework com docs native google maps https ionicframework com docs native goog
  • htaccess 301 仅重定向根目录,但排除所有文件和子文件夹(有例外)

    我不是程序员 htaccess代码 我阅读了其他相关帖子但不明白它们 他们没有一个做我需要的事情 我有一个运行在以下位置的 WordPress 网站http example com main但想重定向http example com to
  • Renderscript 无法运行的设备列表

    我的应用程序需要 Renderscript 因为它执行一些在 Java 中需要几秒钟的图像处理 在发布之前 我已经在许多设备上测试了它 甚至是一些较旧的型号 例如 Samsung Galaxy Tab 2 API 17 并且即使在这些设备上
  • 添加新节点时,链表的浅拷贝不反映更改

    I have done a lot of readings but seems like I can t clear my confusion without asking here Based on the diagram when I
  • 全部连接关闭时的任务

    我正在尝试使用 Task WhenAll 执行多个 SqlDataReaders 但是当任务等待时我得到 System InvalidOperationException 无效操作 连接 关闭了 创建任务 List
  • 在哪里可以找到 Visual Studio 中安装的 TypeScript 版本?

    也许这是显而易见的 但我检查了所有地方 除了正确的地方 并用谷歌搜索了它 没有什么 如果您只为 Visual Studio 安装了 TypeScript 则 开始Visual Studio 命令提示符 https msdn microsof
  • Apache代理负载均衡后端服务器故障检测

    这是我的场景 由我的前任设计 两台 Apache 服务器为多个混合后端 Web 服务器 Apache IIS Tomcat 等 提供反向代理服务 有些网站我们有多个后端 Web 服务器 在这些情况下 我们会执行以下操作
  • 恢复 Github Desktop 中丢失的隐藏更改 (Windows 10)

    作为初学者使用 Github Desktop Windows 10 上的 v 2 9 6 当在分支之间来回移动时 我会存储更改以将其保留在分支上以供以后使用 但是连续执行两次 它实际上会覆盖并删除之前的存储 而不是将更改堆叠到存储中 因此我
  • Visual Studio 自动完成 C++ 的 Doxygen 标签

    有没有办法让 Visual Studio 自动将 doxygen 标签放入 C 源文件中 我的意思是例如这段代码 int foo bool p 如果我输入 在其之上 Visual Studio 自动生成以下行
  • 负整数返回零

    一位朋友只是抛出了一些类似于以下 C 代码的代码 int i return i lt 0 0 i 这让我思考 有什么 不同 的方式来返回负整数零或当前正值 更具体地说 如果可能的话 我正在寻找按位运算 顺便说一句 我知道Math Max 0