我正在阅读的一本书使用以下函数创建一个哈希表
size_t hash(const std::string &str) {
int count = 16;
size_t hash_value = 0;
const char *cstr = str.c_str();
while(cstr && *cstr && --count)
hash_value += (*cstr++ - 'a') << (count % 4);
return hash_value;
<<
运算符在此上下文中的作用是什么?
答案 0 :(得分:1)
这有点转变。如果你有一个以二进制表示的数字X为00001111,那么X&lt;&lt; 3将导致数字01111000.X&gt;&gt; 3将是00000001。
实际上,X << n
与X * 2^n
相同(考虑无符号类型的溢出)。 X >> n
相当于X / 2^n
。 ^
我指的是权力。