什么是“<<” C ++中的运算符?

时间:2012-05-14 18:11:23

标签: c++ operators

我无法理解运营商“<<”表示以下代码。

    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);
 }

4 个答案:

答案 0 :(得分:1)

这是左移操作员。它将剩余的值移位2位,实际上将它乘以2乘以2的幂(移位量)。

a << b

与:

相同
a * (2 to the power of b)

答案 1 :(得分:0)

这是一个bit shift operator(在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)

答案 2 :(得分:0)

它是c ++中的bithift运算符。

答案 3 :(得分:0)

这是一个bitwise shift left运算符,这意味着当向左移位两位时,将h值分配有效地将h乘以2,得到2的幂:

h << 2 == h * (2 ^ 2)

您可以找到有关它的更多信息here

提示:下次首先搜索http://www.google.com