作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在努力寻找 C# 中 Java 的 Integer.highestOneBit(int)
的精确替代品。
我什至试图找到它的源代码,但无济于事。
JavaDocs 告诉这个函数:
Returns an int value with at most a single one-bit, in the position of the highest-order ("leftmost") one-bit in the specified int value.
那么我将如何在 C# 中实现它呢?感谢任何帮助或链接/重定向。
最佳答案
This site提供了一个应该在 C# 中工作的实现,只需进行一些修改:
public static uint highestOneBit(uint i)
{
i |= (i >> 1);
i |= (i >> 2);
i |= (i >> 4);
i |= (i >> 8);
i |= (i >> 16);
return i - (i >> 1);
}
它基本上用 1 填充所有低于最高位的位,然后删除除最高位以外的所有位。
示例(仅使用 16 位而不是 32 位):
start: i = 0010000000000000
i |= (i >> 1) 0010000000000000 | 0001000000000000 -> 0011000000000000
i |= (i >> 2) 0011000000000000 | 0000110000000000 -> 0011110000000000
i |= (i >> 4) 0011110000000000 | 0000001111000000 -> 0011111111000000
i |= (i >> 8) 0011111111000000 | 0000000000111111 -> 0011111111111111
i - (i >> 1) 0011111111111111 - 0001111111111111 -> 0010000000000000
关于c# - C# 中的 Java Integer.highestOneBit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846601/
Java Integer 类有一个静态方法 highestOneBit 方法,它会在指定值中最高位的位置返回一个只有一位的值,如果指定值本身等于,则返回零零。 例如输入 int 17 将返回 16;由
我一直在努力寻找 C# 中 Java 的 Integer.highestOneBit(int) 的精确替代品。 我什至试图找到它的源代码,但无济于事。 JavaDocs 告诉这个函数: Returns
我是一名优秀的程序员,十分优秀!