邏輯與運算
任何時候,只要兩個表示式的某位都為 1,則結果的該位為 1。否則,結果的該位為 0。
1&0=0
0&1=0
0&0=0
1&1=1
邏輯與的性質
1.可以將任意位清零
比如與乙個00001111 就是將乙個8位數的高4位清零,保留低4位。同理也可以與11110000 將低4位清零。
2.n&(n-1)
每一次將n二進位制從低位到高位第乙個1清零。
相關題目
1.判斷乙個數n的奇偶性
利用性質1 將n&1 也就是將除了最後一位都清零,如果結果是1就是奇數,不然就是偶數。
2.判斷乙個數是2的n次方
因為2的n次方二進位制一定是10..00的形式,利用性質2 將n&(n-1) 如果結果是0就是2的n次方。
3.判斷乙個二進位制數中有多少個1
解法1.利用性質2 將n = n&(n-1) 直到n==0。因為n&(n-1)一次清零乙個1,所以可以統計出有多少個1。
解法2.還可以用性質1,判斷n&1,也就是判斷最後一位是不是1,然後n=n>>1 將n右移1位。從低位到高位依次判斷1的個數。
解法3.還可以讓n不改變,讓n&flag 這個flag初始等於1,以後每次flag<<1。
其中方法1最好,有幾個1就移動幾次,方法2,方法3都是n有多少位要移動多少次。
4.給定兩個二進位制數m和n,判斷m需要改變多少位變成n
利用 異或性質 ,t=m^n,然後和題目3一樣,統計t中1的個數就行了。
此類題就是考慮二進位制的一些形式特點,然後運用與操作就ok了。
邏輯位運算與邏輯運算
兩者非常容易混淆,其實這是截然不同的兩種運算.1.邏輯位運算 與運算 1 2 0 0000 0001 0000 0010 0000 0000 0 或運算 1 2 3 0000 0001 0000 0010 0000 0011 3 按位求反 運算,異或 運算略.移位 左移,右移 運算略.2.邏輯運算 ...
邏輯運算與移位運算
原始碼 正數的補碼與原碼相同例 7 原始碼 00000111 補碼 00000111 用8位二進位制表示乙個數 負數的補碼 符號位為1,其餘位為該數絕對值的原碼按位取反 然後整個數加1。7 原始碼 10000111 其絕對值為00000111 取反加一 11111001 為 7補碼 已知乙個數的補碼...
邏輯運算與位運算
1.邏輯運算 邏輯運算又稱布林運算,它的結果應該是乙個真假值,也就是true還是false。1 與運算,同為真時才為真。2 或運算,同為假時才為假,也就是說有乙個為真即為真。3 非運算,true false,false true。4 異或運算,按照每一位進行異或,相同為0,不同為1。2.位運算 1 ...