來自 轉侵刪
一··左移<
「將乙個二進位制數向左或向右移動 k 位,就是給乙個數乘 2^k或者除 2^k(末尾1不計)。
」二·取反~
「對於 int 來說, ~ x=-x-1
」三·與and &
「對於兩個二進位制數的每一位,如果這一位都是 1,那麼這一位為 1,否則這一位為 0。
」if(x&1) 那麼x是奇數
四·或or |
「如果這兩個數此位有乙個 1 那麼此位就是 1,否則為0。
五·異或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
關於位運算
今天看k神的一篇題解,看到一些關於位運算的技巧。又想起以前學長川哥給的一篇位運算對集合處理的技巧的pdf。所以就一起整理一下。各種位運算子的功能就不累述了。集合的位運算表示 來自川哥給的pdf 基本表示 1.空集 0 2.全集 1 3.只含有第 i 個元素的集合1 集合間的操作 1.s 與 t 的並...
關於位運算
9月21日,對本文從格式到部分內容上都進行了修改 今天看了一位師兄去年的筆經總結,其中有一題是 不許用 和 來實現求任意數除以3的餘數 我想考官的目的應該是想考察學生對位運算的熟悉程度吧,於是我把題目擴充套件成 只能用 和位運算實現正整數除法 和取模 注意 這裡不能使用其它的庫例程來輔助計算,如lo...
關於 位運算
位運算 位運算是把數字用二進位制表示之後,對每一位上0或者1的運算。理解位運算的第一步是理解二進位制。二進位制是指數字的每一位都是0或者1.比如十進位制的2轉化為二進位制之後就是10。在程式設計師的圈子裡有乙個流傳了很久的笑話,說世界上有10種人,一種人知道二進位制,而另一種人不知道二進位制。其實二...