-
無符號右移運算>>>查看全部
-
右移運算查看全部
-
左移運算<<查看全部
-
取反運算 ~查看全部
-
兩個變量交換值查看全部
-
異或運算查看全部
-
按位或 |查看全部
-
(一)按位與& 特殊運輸 (1)清零,如果想將一個單元清零,即使其全部二進制位為0,只要與一個各位都是零的數(shù)值相與,結果為零。 (2)取一個數(shù)中指定位:找一個數(shù),對應x要取的位,該數(shù)的對應位為1,其余位為零,此數(shù)與x進行“與運算”可以得到x中的指定為 (二)按位或| 特殊用法 常用來對一個數(shù)據(jù)的某些位置1:找到一個數(shù),對應x要置1的位,該數(shù)的對應位為1,其余位為零。此數(shù)與x相或可使x中的某些位置1。 (三)異或^ 特殊用法 (1)使特定位翻轉:特定位異或1 (2)與0相異或,保留原值 (3)兩個變量交換值 1.借助第三個變量來實現(xiàn) 2.利用加減法實現(xiàn)兩個變量的交換 A=A+B;B=A-B;B=A=B 3.異或運算 一個數(shù)異或本身等于0和異或運算符合交換律 A=A^B;B=A^B;A=A^B (四)取反與運算~ 對一個二進制數(shù)按位取反,即將0變?yōu)?,1變0 (五)左移<< 將一個運算對象的各二進制位全部左移若干位, (六)右移>> 將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0,負數(shù)左補1,右邊丟棄。操作數(shù)每右移一位,相當于該數(shù)除以2 (七)無符號右移運算>>> 各個位向右移指定的位數(shù)。右移后左邊空出的位用零來填充。移除右邊的位被丟棄。 負數(shù)以其正數(shù)的補碼形式表示 反碼加1稱為補碼 32位整數(shù),最高位為1,就是負數(shù) 負數(shù) 左移或者右移查看全部
-
按位與&查看全部
-
常用進制查看全部
-
十進制轉二進制查看全部
-
拓展學習查看全部
-
位運算的幾個應用: 1) 判斷int型變量a是奇數(shù)還是偶數(shù) a&1 = 0 偶數(shù) a&1 = 1 奇數(shù) 2) 取int型變量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1 (先右移再與1) 3) 將int型變量a的第k位清0,即a=a&~(1<<k) (10000 取反后為00001 ) 4) 將int型變量a的第k位置1,即a=a|(1<<k) 5) int型變量循環(huán)左移k次,即a=a<<k|a>>16-k (設sizeof(int)=16) 6) int型變量a循環(huán)右移k次,即a=a>>k|a<<16-k (設sizeof(int)=16) 7)對于一個數(shù) x >= 0,判斷是不是2的冪。 boolean power2(int x){return ( (x&(x-1))==0) && (x!=0);} (8)不用temp交換兩個整數(shù) void swap(int x , int y) {x ^= y;y ^= x;x ^= y;} (9)計算絕對值 int abs( int x ){int y ;y = x >> 31 ; return (x^y)-y ; //or: (x+y)^y } 10)取模運算轉化成位運算 (在不產(chǎn)生溢出的情況下) a % (2^n) 等價于 a & (2^n - 1) 11)乘法運算轉化成位運算 (在不產(chǎn)生溢出的情況下) a * (2^n) 等價于 a<< n 12)除法運算轉化成位運算 (在不產(chǎn)生溢出的情況下) a / (2^n) 等價于 a>> n 例: 12/8 == 12>>3 13) a % 2 等價于 a & 1 14) if (x == a) x= b; else x= a; 等價于 x= a ^ b ^ x; 15) x 的 相反數(shù) 表示為 (~x+1) 16)輸入2的n次方:1 << 19 17)乘除2的倍數(shù):千萬不要用乘除法,非常拖效率。只要知道左移1位就是乘以2,右移1位就是除以2就行了。比如要算25 * 4,用25 << 2就好啦查看全部
-
Integer.toHexString(int i) 十進制轉成十六進制 Integer.toOctalString(int i) 十進制轉成八進制 Integer.toBinaryString(int i) 十進制轉成二進制 Integer.valueOf("FFFF",16).toString() 十六進制轉成十進制 Integer.valueOf("376",8).toString() 八進制轉成十進制 Integer.valueOf("0101",2).toString() 二進制轉成十進制 Integer.parseInt("0101",2)/("76",8)/("FA3",16)查看全部
-
(一)按位與& 特殊運輸 (1)清零,如果想將一個單元清零,即使其全部二進制位為0,只要與一個各位都是零的數(shù)值相與,結果為零。 (2)取一個數(shù)中指定位:找一個數(shù),對應x要取的位,該數(shù)的對應位為1,其余位為零,此數(shù)與x進行“與運算”可以得到x中的指定為 (二)按位或| 特殊用法 常用來對一個數(shù)據(jù)的某些位置1:找到一個數(shù),對應x要置1的位,該數(shù)的對應位為1,其余位為零。此數(shù)與x相或可使x中的某些位置1。 (三)異或^ 特殊用法 (1)使特定位翻轉:特定位異或1 (2)與0相異或,保留原值 (3)兩個變量交換值 1.借助第三個變量來實現(xiàn) 2.利用加減法實現(xiàn)兩個變量的交換 A=A+B;B=A-B;B=A=B 3.異或運算 一個數(shù)異或本身等于0和異或運算符合交換律 A=A^B;B=A^B;A=A^B (四)取反與運算~ 對一個二進制數(shù)按位取反,即將0變?yōu)?,1變0 (五)左移<< 將一個運算對象的各二進制位全部左移若干位, (六)右移>> 將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0,負數(shù)左補1,右邊丟棄。操作數(shù)每右移一位,相當于該數(shù)除以2 (七)無符號右移運算>>> 各個位向右移指定的位數(shù)。右移后左邊空出的位用零來填充。移除右邊的位被丟棄。 負數(shù)以其正數(shù)的補碼形式表示 反碼加1稱為補碼 32位整數(shù),最高位為1,就是負數(shù) 負數(shù) 左移或者右移查看全部
舉報
0/150
提交
取消