今天看到知乎裡面看到兩個有趣的位運算,記錄一下:
第乙個是判斷乙個數的奇、偶性:
// 奇數返回 true
boolean isodd(int n)
就我個人的理解說一下吧,按照二進位制轉換成十進位制的一種方式,最後的一位是:1*2的0次方或者是0*2的0次方。這個是int數末尾為1的時候就是奇數咯,為0的時候就是偶數咯。
還有乙個是這樣的:不准用乘法,實現n*7。答案是:
n << 3 − n;
這裡的話呢,如果題目換成實現n*8那就簡單多了:n<<3,就是n*2的3次方;這裡是n*7,那在向左移3位的時候(也就是將n增加到原來的8倍),再減掉乙個n也就是n*7咯。 有趣的位運算
看了會 c程式語言 的位運算一節,重溫了下 位運算 的巧妙與高效。與操作可以用來判斷乙個整數的奇偶性,依據二進位制的性質可以很容易得到這樣的結論,因此 if a 1 a is odd else a is even 左移右移的應用應該更熟悉,可以方便進行 2和 2操作。之前遇到的應用有快速冪之類的。學...
c語言有趣的位運算
應用 1.判斷奇偶 2.見後面有趣應用 本身異或為0,與0異或為本身,滿足交換律。應用 不借助第三個數交換兩數,有趣應用4 cpp view plain copy void swap int a,int b 可以這樣理解 第一步 a b 即a a b 第二步 b a 即b b a b 由於 運算滿足...
位運算 57 普通的位運算
要求說明 當 a 2,b 4,c 6,d 8時程式設計求a c b d a d a的值。解 單目運算子 都是對對應整數轉化成二進位制數後按位比較計算 兩個相應二進位中,都為1,該位為1,否則為0 兩個相應二進位中,有乙個1,該位為1,否則為0 兩個相應二進位,相同為0,不同為1 單目運算子,作用對二...