gpt4 book ai didi

c# - 获取前导 1 的位数

转载 作者:太空狗 更新时间:2023-10-29 23:23:35 28 4
gpt4 key购买 nike

给定一个无符号数,获取前导 1 位数的好(最好是快)方法是什么?

我需要这个来根据四点 IPv4 网络掩码计算 CIDR 编号。

注:我看过getting-the-number-of-trailing-1-bits ,所以我可以进行基于表的查找。

注意 2:尽管我添加了几个语言标签,但对我来说它是关于算法的,所以如果你有其他语言的好算法,请随时发布。

编辑: endian-ness .

我刚刚发现 INET_ADDR functionIN_ADDR structure以大端形式存储 IPv4 地址,而 x86 是小端形式,我使用的大多数处理器也是小端形式。
因此,针对这种特定情况的查找表已经足够快了。
但感谢其他答案:它们在更常见的情况下工作得很好。

--杰伦

最佳答案

如果将所有位取反,可以使用前导1检测算法(相当于log2算法);参见例如http://www-graphics.stanford.edu/~seander/bithacks.html .您可以修改其中一些算法,并跳过反演阶段。

关于c# - 获取前导 1 的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713214/

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