我无法理解以下代码中的运算符“<<”是什么意思。
long hashString(char* key)
{
int n = strlen(key);
long h = 0;
for(int i=0; i<n; i++)
{
h = (h << 2) + key[i];
}
return abs(h % tablesize);
}
它是左移运算符。它将值左移 2 位,有效地将其乘以 2 的 2 次方(移位量)。
a << b
是相同的:
a * (2 to the power of b)
它是一个位移运算符(在这个上下文中是一个long
变量)。
它将所有位移动 2 位,结果乘以 4(就像您将在基数为 10 的数字中添加两个数字以乘以 100。概括地说,移动n位将使数字乘以2^n
)。例如:
unsigned int x = 0xA; // x = 1010 (10 base 10)
unsigned int y = x << 1; // y = 10100 (20 base 10)
您可以通过将位向右移动来执行除以二(即,从末尾切掉一个)
unsigned int x = 0xA; // x = 1010 (10 base 10)
unsigned int y = x >> 1; // y = 101 (5 base 10)
它是 C++ 中的位移运算符。
这是一个bitwise shift left
运算符,这意味着您h
在左移两位时分配值,有效地乘以h
2 到 2 的幂:
h << 2 == h * (2 ^ 2)
您可以在此处找到有关它的更多信息。
提示:下次先搜索http://www.google.com。