ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

位运算常见操作

2020-07-02 21:01:53  阅读:221  来源: 互联网

标签:运算 31 常见 运算符 异或 按位 次方 操作 位变


常见运算符

&:按位与。

|:按位或。

~:按位非。

^:按位异或。(相同为0,否则为1)

<<:左位移运算符。

>>:右位移运算符。

<<<:无符号右移运算符。

 

常见操作

1,判断x是奇数还是偶数:(x&1)==0

2,x乘以一个2的n次方的数:x<<n

3,x除以一个2的n次方的数:x>>n

4,消去x最后一位的1:x&(x-1)

5,求x的相反数: ~(x-1)或者~x+1

6,x的异或操作:~x = -x-1

7,把x从右边数第n位变1:x|(1<<(n-1))(n从1开始)

8,把x从右边数第n位变0:x&(~(1<<(n-1)))(n从1开始)

9,取x最后n位的值:x&((1<<n)-1)

10,取x前n位的值,后面的全部置为0:x & (~((1 << (32 - n)) - 1))

11,只保留x右边第一个1,其他的全部置为0:x & (-x)

或x & ~(x - 1)

12,判断x的第n位是偶数还是奇数:(x & (1 << (n - 1))) == 0

13,求x的绝对值:(n ^ (n >> 31)) - (n >> 31)

或(x >> 31) == 0 ? x : (~x + 1)

或(x + (x >> 31)) ^ (x >> 31)

14,求两个数的最大数:(x & ((y - x) >> 31)) | (y & (~(y - x) >> 31))

15,返回x的符号:(i >> 31) | (-i >>> 31)(正数为1,负数为-1)

16,两数相加:(x | y) + (x & y)

或(x ^ y) + ((x & y) << 1)

17,两数相减:(x & ~y) - (~x & y)

18,求两数的平均数:(x & y) + ((x ^ y) >> 1)

或(x + y) >> 1

19,判断一个数是不是2的次幂:(x != 0) && (x & (x - 1)) == 0

20,x对2的n次方求余:x & (2^n - 1)(这里的^是幂的次方)

21,判断x和y的符号是否相同:(a ^ b) >= 0

22,if(x == a) x = b; if(x == b) x = a:用异或运算符:x = a ^ b ^ x。

标签:运算,31,常见,运算符,异或,按位,次方,操作,位变
来源: https://www.cnblogs.com/jingpeng77/p/13227070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有