C 中的波形符运算符

2023-12-02

我见过 ELF 哈希算法中使用的波形符运算符,我很好奇它的作用。 (代码是来自永远的迷茫.)

unsigned elf_hash ( void *key, int len )
{
  unsigned char *p = key;
  unsigned h = 0, g;
  int i;

  for ( i = 0; i < len; i++ ) {
    h = ( h << 4 ) + p[i];
    g = h & 0xf0000000L;

    if ( g != 0 )
      h ^= g >> 24;

    h &= ~g;
  }

  return h;
}

The ~运算符是按位NOT,它反转二进制数中的位:

NOT 011100
  = 100011
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的波形符运算符 的相关文章