程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算就是直接對整數在記憶體中的二進位制位進行操作。
位運算符號:<>,|,&,^,~
位運算的三個步驟:
1.確定要使用的符號
2.確定數
3.怎麼得到這個數
二元運算子:
<< :按位左移,右邊補充0
:按位右移,左邊補充符號位&:按位與,對應的位置上都是1的為1,與要變0的題相關
|:按位或,對應位置上只要有乙個是1的為1,與要變1的題相關
^:按位異或,對應位置上不同的為1,與取反的題相關
一元運算子:
~:取反,將所有位上的數字取反,1為0,0為1 ,與取反的題相關
解析:兩數求和,就是將兩個數二進位制的相同部分2加上不相同的部分,例如7+5=52+(7-5)=12,
**(a&b)取兩個數的相同部分,(ab)取兩個數的不同部分**,所以答案是2*(a&b)+(ab)
解析:反轉,即第0位到第31位,第1位到第30位…所以第i位到第31-i位,(n&1)==1是判斷右邊第一位是否為1,m|=(1<
注:x+1相當於將從右數的第乙個0變成1,這個數前面的數都變為0
x-1相當於將從右數的第乙個1變成0,這個數前面的數都變為1
解析:1.最後一位取反:1.取反要用^、2.確定數字1,即x ^ 1
2.把右數第k位變成1:1.變1用 | 、2.確定數字 00001000第k-1位要為1,即x&(1<>k-1)&1
8.把右邊連續的1變成0:前面的數不變,1.變0用&,即x&(x+1)
9.把右起第乙個0變成1:1.變1用|,即x|(x+1)
10.把右邊連續的0變成1:1.變1用|,即x|(x-1)
位運算練習
1 2 8的最高效的實現方式.2的二進位制表示形式為 0010 16的二進位制表示形式為 1111 通過左移4位可以實現 2 8 intmain void 2 如何通過位運算判斷乙個數是奇數還是偶數?乙個數如果是奇數的話,那麼他的二進位制最後一位一定為1.跟1進行與運算 如果結果為0則為偶數 1則為...
位運算相關總結
計算機cpu中alu是由邏輯門構成的,非常善於位運算。因此,在程式中使用位運算,經常能夠加快程式執行。另外,掌握一些位運算的相關知識也能增加一些程式設計的樂趣。位運算經常使用到異或運算和與運算。異或運算符合交換律 結合律,它的特點是相同為0,不同為1。與運算是同為1則為1。詳細內容 1 兩個數比較大...
位運算相關總結
按位與運算子 參加運算的兩個資料,按二進位制位進行 與 運算 運算規則 兩位同時為1結果才為 1,否則為 0.負數按補碼形式參加按位與運算 與運算 的特殊用途 1 清零。如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為 0的數值相與,結果為 0.2 取乙個數中指定位 方法 找乙個數...