gpt4 book ai didi

c# - C# 中的 Java Integer.highestOneBit

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:06 24 4
gpt4 key购买 nike

我一直在努力寻找 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);
}

http://ideone.com/oEiNcM

它基本上用 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/

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