我正在读的一本书使用以下函数创建了一个哈希表
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;
在这种情况下,<<
运算符会做什么?
这有点变化。如果您有一个以二进制表示的数字 X 表示为 00001111,则 X <<3 将产生数字 01111000。X>> 3 将是00000001。
实际上,X << n
与X * 2^n
相同(考虑无符号类型的溢出)。 X >> n
相当于X / 2^n
。我说^
是指权力。