Saa*_*ain -4 c c++ return function
我不明白第一个例子中"&"的功能我之前没有经历过这种返回语句,请解释一下!谢谢
以下是一些功能的示例
uint hashToRange(int h) {return h & mask;}
// In this example mask is the data member of generic class
// These are some similar examples
bool lessIndex(intT a, intT b)
{
return 2 * hashToRange(a - b) > m;
}
inline int hashInt(unsigned int a) {
return hash(a) & (((unsigned) 1 << 31) - 1);
}
Run Code Online (Sandbox Code Playgroud)
运算符&是一个按位AND运算符.在这种特殊情况下,它用于屏蔽32位数字中的符号位.
以下是它的工作原理:(unsigned) 1 << 31二进制的值是一个数字,其中第31位设置为1,所有剩余的位设置为零:
10000000 00000000 00000000 00000000
Run Code Online (Sandbox Code Playgroud)
1从中减去产生一个数字,其中低31位设置为1,符号位设置为零*:
01111111 11111111 11111111 11111111
Run Code Online (Sandbox Code Playgroud)
这成为应用的蒙版hash(a).当你对它执行按位AND时,你得到的数字hash(a)除了最重要的"符号"位之外都有所有位,现在它被设置为零.
注意:此代码假设int并且unsigned都是32位类型.该标准并不保证这是真的.更好的方法是使用int32_t和uint32_t类型来确保确切的大小.
*同样的原则在这里起作用,当你从10000中减去1并得到9999时.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |