位運算簡單操作

Enjoy_process發表於2019-03-03

 

位運算簡單操作
功能 例項 運算
去掉最後一位 101101->10110 x >> 1
在最後加一個0 101101->1011010 x << 1
在最後加一個1 101101->1011011 (x << 1) + 1
把最後一位變成1 101100->101101 x | 1
把最後一位變成0 101101->101100 (x | 1) - 1       ;    x & (~1)  
最後一位取反 101101->101100 x ^ 1
把右數第k位變成1 101001->101101,k=3 x | (1 << (k - 1))
把右數第k位變成0 101101->101001,k=3 x & (~(1 << (k - 1)))
右數第k位取反 101001->101101,k=3 x ^ (1 << (k - 1))
取末三位 1101101->101 x & 7
取末k位 1101101->1101,k=5 x & ((1 << k) - 1)
取右數第k位 1101101->1,k=4 (x >> (k - 1)) & 1
把末k位變成1 101001->101111,k=4 x | ((1 << k) - 1)
末k位取反 101001->100110,k=4 1 ^ ((1 << k) - 1)
把右邊連續的1變成0 100101111->100100000 x & (x + 1)
把右起第一個0變成1 100101111->100111111 x | (x + 1)
把右邊連續的0變成1 11011000->11011111 x | (x - 1)
取右邊連續的1 100101111->1111 (x ^ (x + 1)) >> 1
去掉右起第一個1的左邊 100101000->1000 x & (x ^ (x - 1))

 

相關文章