一些常见的二进制位的变换操作

功能 示例 位运算
去掉最后一位 (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))
取末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))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容