相关疑难解决方法(0)

如何检查数字是否为2的幂

今天我需要一个简单的算法来检查一个数是否是2的幂.

算法需要是:

  1. 简单
  2. 纠正任何ulong价值.

我想出了这个简单的算法:

private bool IsPowerOfTwo(ulong number)
{
    if (number == 0)
        return false;

    for (ulong power = 1; power > 0; power = power << 1)
    {
        // This for loop used shifting for powers of 2, meaning
        // that the value will become 0 after the last shift
        // (from binary 1000...0000 to 0000...0000) then, the 'for'
        // loop will break out.

        if (power == number)
            return true;
        if (power > number)
            return false; …
Run Code Online (Sandbox Code Playgroud)

c# algorithm math

549
推荐指数
13
解决办法
21万
查看次数

在C中以整数查找最高设置位(msb)的最快/最有效方法是什么?

如果我有一个整数n,并且我想知道最高位的位置(也就是说,如果最低有效位在右边,我想知道最左边位的位置是1),找出最快捷/最有效的方法是什么?

我知道POSIX支持ffs()strings.h中的一个方法来查找第一个设置位,但似乎没有相应的fls()方法.

是否有一些非常明显的方法可以解决这个问题?

如果你不能使用POSIX功能来实现可移植性呢?

编辑:如何在32位和64位架构上运行的解决方案(许多代码清单似乎只能在32位整数上运行).

c algorithm optimization bit-manipulation

112
推荐指数
11
解决办法
11万
查看次数

为什么HashMap要求初始容量为2的幂?

当我看到以下内容时,我正在浏览Java的HashMap源代码

//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么这个要求首先存在?我还看到允许创建具有自定义容量的HashMap的构造函数将其转换为2的幂:

int capacity = 1;
while (capacity < initialCapacity)
  capacity <<= 1;
Run Code Online (Sandbox Code Playgroud)

为什么容量总是必须是2的幂?

此外,当执行自动重新散列时,究竟会发生什么?哈希函数也改变了吗?

java hash hashtable hashmap

41
推荐指数
2
解决办法
2万
查看次数

检查所有变量的值是否不同的快速方法

考虑9个变量,每个变量的值可以从1到9.什么是检查每个变量是否具有不同值的好的快速方法.我想到的第一个想法就是总结它们,看它是否相等,n(n+1)/2但这无处不在.有任何想法吗?

编辑:非常感谢你们.完全忘记了Set.我是个菜鸟.

java algorithm

2
推荐指数
2
解决办法
1257
查看次数

标签 统计

algorithm ×3

java ×2

bit-manipulation ×1

c ×1

c# ×1

hash ×1

hashmap ×1

hashtable ×1

math ×1

optimization ×1