我不明白在下面的代碼中運營商「< <」是什麼意思。什麼是C++中的「<<」運算符?
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);
}
我不明白在下面的代碼中運營商「< <」是什麼意思。什麼是C++中的「<<」運算符?
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);
}
它是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)
司?還是乘法? –
@Ates Goral:Derp,我轉移了錯誤的方式:)。謝謝。 –
兩位移位導致乘法/除法4. –
它是在C位位移操作者++。
這是一個bitwise shift left
運營商,這意味着您分配h
值時移由兩位由2有效乘以h
到2的冪左:
h << 2 == h * (2^2)
你可以找到更多關於它的信息here。
提示:下次搜索http://www.google.com首先。
谷歌的c + + <<運算符,你會很快發生偏移。 – ScarletAmaranth
它已經死了吉姆.. –
「這個問題沒有顯示任何研究工作。」嗯...... – ildjarn