码迷,mamicode.com
首页 > 其他好文 > 详细

關於位運算

时间:2018-11-06 11:15:09      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:strong   tps   ref   bsp   图片   一个   比较大小   com   ··   

來自https://www.luogu.org/blog/chengni5673/er-jin-zhi-yu-wei-yun-suan    轉侵刪

一··左移<<  右移>>

“将一个二进制数向左或向右移动 k 位,就是给一个数乘 2^k 或者除 2^k(末尾1不计)。

二·取反~

“对于 int 来说, ~ x=-x-1

三·與and &

“对于两个二进制数的每一位,如果这一位都是 1 ,那么这一位为 1 ,否则这一位为 0

if(x&1) 那麼x是奇數

四·或or |

“如果这两个数此位有一个 1 那么此位就是 1,否则为0

  • x & y<=x
  • x | y>=x

 

五·異或xor  ^

“对于两个二进制数的每一位,如果相同则为 0 ,否则为 1

显而易见的是一个数异或他自己肯定是得 0 的

对于一个形如 2*n 的数 x, x ^ 1 =x+1,而对于一个形如 2*n+1 的数 x, x ^ 1 =x-1

如果 x ^ y=z 那么 y ^ z=x, x ^ z=y

"关于位运算的优先级,大致按下面排序

加减运算 >> 移位运算 >> 比较大小运算 >> 与运算 >> 异或运算 >> 或运算"

優化

交換兩個整數: x=x^y, y=y^x, x=x^y

技术分享图片

 

關於位運算

标签:strong   tps   ref   bsp   图片   一个   比较大小   com   ··   

原文地址:https://www.cnblogs.com/azureholmes/p/9913241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!