这个小妖精,怎么说呢?神奇的很,想到了觉得简单,想不到直呼精妙。特别是看别人位运算用得特别溜的时候,心中总是不是滋味儿,入门级别的东西,差距也可以这么大哈。
位运算——状压DP前置知识

">>"右移
“<<"左移
"|"或
"&"且
”^"异或

咦(・∀・(・∀・(・∀・*)不会吧不会吧,不会有人这也不会吧。
正片开始!
答应我,每一个问题先自己想然后再看答案,因为这是基本功

  • 去掉最后一位
    x>>1

  • 最后一位取反
    x^1

  • 在最后位添一个0
    x<<1

  • 在最后位添一个1
    (x<<1)+1

  • 把右数第k位变成1
    x|(1<<(k-1))

注意是(k-1)噢!因为1<<1就是10辣

  • 把右数第k位变成0
    x&(~ 1<<(k-1))

啊这,取反操作也太机智了吧!

  • 把右数第k位取反
    x^(1<<(k-1))

  • 最后一位变成1
    x|1

  • 最后一位变成0
    x&0吗?错!这样x就会变成0。正解是:x右移一位然后再左移一位,或者用上面的方法,把最后一位先变成1,然后-1
    即(x|1)-1

  • 取末k位
    x&(2^k-1)或者x&((1<<k)-1) 即用k个1拷贝

  • 取右数第k位
    (x&(1<<(k-1)))>>(k-1)或者直接把x毁掉(x>>(k-1))&1

  • 把末k位变成1
    x|((1<<k)-1) 即或上k个1

  • 末k位取反
    x^((1<<k)-1)

  • 把右边连续的1变成0
    x&(x+1)

  • 把右起第一个0变成1
    x|(x+1)

  • 把右边连续的0变成1
    x|(x-1)

  • 取右边连续的1
    (x^(x+1))>>1

  • 去掉右起第一个1的左边
    x&(-x)
    这个也很妙!-x就是x取反之后+1,后面的100…0不会变,前面全部反掉之后取&变成0

建议不定期复习,保持数感~
位运算——状压DP前置知识

位运算——状压DP前置知识
晚安~又不受控制地说了一些孩子气地置气话。
看到小孩子装逼真的受不了,这个行业也算年龄敏感吧,还是提高自己的核心竞争力避免被取代吧,再也不是小孩子了,不能像以前一样干不赢我就不玩了,这个世界残酷得真实,谁会管你什么心情?硬着头皮上,去争取,去竞争,去拼搏,雨巨说了,害怕你就输了。他们确实有初生牛犊不怕虎的猛劲,天不怕地不怕什么都敢说,什么都敢问,就是要学习这种精神呀!wyy你在想什么(⊙﹏⊙)!

相关文章: