Title

【技巧】k != -1 可以简写成 ~k

k != -1 可以简写成 ~k

~表示按位取反,顾名思义,取反运算就是将1变0,0变1。

当k=-1时,将其转换为二进制表达可得到 11111111 11111111 11111111 11111111

  • (负数在二进制时借助补码来表达,关于补码,可详见于“其他”,一般就是把负数所对应的正数的二进制状态下的最高位修改为1,然后最高位按兵不动,其余取反,得到反码,然后加上1)

~k将得到0

  • 应用:

    在前向星的运用中,一般将第一条边的位置赋值为-1(memset(h,-1,sizeof(h)))

    for(int i=h[i];~i;i=ne[i])
    {
        操作;
    }
    

其他

关于负数在二进制中的表达

posted @ 2021-07-14 18:58  BeautifulWater  阅读(1001)  评论(0编辑  收藏  举报