【1001】位运算学习笔记

来源:互联网 发布:手机均衡器软件 编辑:程序博客网 时间:2024/05/29 15:12

看Matrix67的位运算系列博客,整理一下。


位运算符只能用于整型数据。

!!!位运算符的优先级比较低,因此应尽量使用括号来保证运算顺序!!!

C符号 含义 应用 运算规则 & and 取位 or 无条件赋值 ^ xor 特定位取反 是不是不一样 ~ not 每位取反 not a <=> -a-1 << shl a << b <=> a x 2^b 左移b位,后面添b个0 shr a >> b <=> a / 2^b【取整】 去掉末尾b位之后,对于无符号数,左边添b个0,对于有符号数,左边复制b个符号位

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

功能 示例 位运算 把最后一位变成0 101101->101100 x or 1-1 最后一位取反 101101->101100 x xor 1 把右数第k位变成1 101001->101101,k=3 x or (1 shl (k-1)) 取右数第k位 1101101->1,k=4 x shr (k-1) and 1 取末k位 1101101->1101,k=4 x and ((1 shl k) - 1) 把右边连续的1变成0 100101111->100100000 x and (x+1) 把右起第一个0变成1 100101111->100111111 x or (x+1) 把右边连续的0变成1 11011000->11011111 x or (x-1) 取右边连续的1 100101111->1111 (x xor (x+1)) shr 1 去掉右起第一个1的左边 100101000->1000 x and (x xor (x-1))
0 0
原创粉丝点击