gpt4 book ai didi

c# - 在 ulong (C#) 中获得最后一个有效位的最快方法?

转载 作者:太空狗 更新时间:2023-10-29 17:51:42 25 4
gpt4 key购买 nike

在 ulong (C#) 中获取从最低有效位 (LSB) 到最高有效位 (MSB) 的第一个 set(1) 位位置的最快(或至少非常快)方法是什么?对于 ulong i = 18; (10010) 这将是 2(如果我们从 0 开始计算位置,则为 1)。

MS C++ 编译器有 _BitScanForward64此任务的内在函数,但 C# 编译器没有类似物。

最佳答案

随着 .NET Core 3.0 引入硬件内在函数,最快的解决方案应该是

ulong value = 18;
ulong result = System.Runtime.Intrinsics.X86.Bmi1.X64.TrailingZeroCount(value);

或者,新的 System.Numerics.Bitoperations 方法也使用硬件内在函数:

int result2 = System.Numerics.BitOperations.TrailingZeroCount(value);

关于c# - 在 ulong (C#) 中获得最后一个有效位的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com