程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算說穿了,就是直接對整數在記憶體中的二進位制位進行操作,也就是對資料進行二進位制的計算;
1、&將兩個數字轉化為二進位制數字,對每個數字上的數字進行比較,如果兩個數字上的數字相同則取其值,如果兩個數字上的數字不同則取0,如111&100=100,100&101=100;
2、|將二進位制的數字的每個數字的數字進行比較,只要兩個數字中有乙個是同數字上是1,則這個數字的值取1,如:111|101=111,
110&110=110;
3、^運算規律,將同數字的數字看為boolear值,0為false,1為true。0和0相當於兩個false結果為ture,但是這個運算子是取反,所以結果為false,也就是0,同理1和1,結果為ture,取反結果為0,1和0,結果為false,取反為true也就是1,例子:110^101=011,
101^111=010,101^101=000;
4、<<
左移,運算子後面是幾就向做移動幾位,如:101<<2=10100;
5、右移
右移跟左移同理,如;101>>2=1;
6、~反碼,就是所有數字的值1變為0,0變為1,也就是給乙個數取反-1,如:~110=001,~101=010;
1、乘除2
左移或右移n位相當於乘或除2的n次方,例如:12>>1=6,12>>2=3;
2、判斷奇偶數
將該數字與1按位與,如果返回的結果是1,則是奇數,如果返回的結果是0則是偶數,如:5&1=1,4&1=0;
3、取餘
只不過取余是除以2的整數倍取餘,a&b相當於a除以2的(b-1)次方獲得的餘數,如:5&3=1;
4、求相反數
~a+1就是獲得當前數字a的相反數,如~-1+1=1,~100+1=-100;
關於位運算
今天看k神的一篇題解,看到一些關於位運算的技巧。又想起以前學長川哥給的一篇位運算對集合處理的技巧的pdf。所以就一起整理一下。各種位運算子的功能就不累述了。集合的位運算表示 來自川哥給的pdf 基本表示 1.空集 0 2.全集 1 3.只含有第 i 個元素的集合1 集合間的操作 1.s 與 t 的並...
關於位運算
9月21日,對本文從格式到部分內容上都進行了修改 今天看了一位師兄去年的筆經總結,其中有一題是 不許用 和 來實現求任意數除以3的餘數 我想考官的目的應該是想考察學生對位運算的熟悉程度吧,於是我把題目擴充套件成 只能用 和位運算實現正整數除法 和取模 注意 這裡不能使用其它的庫例程來輔助計算,如lo...
關於 位運算
位運算 位運算是把數字用二進位制表示之後,對每一位上0或者1的運算。理解位運算的第一步是理解二進位制。二進位制是指數字的每一位都是0或者1.比如十進位制的2轉化為二進位制之後就是10。在程式設計師的圈子裡有乙個流傳了很久的笑話,說世界上有10種人,一種人知道二進位制,而另一種人不知道二進位制。其實二...