位运算学习
来源:互联网 发布:个性的淘宝店铺名字 编辑:程序博客网 时间:2024/05/16 11:26
去掉最后一位 | (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 最后一位取反 | (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) | x ^ (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))