pq實例圖 如下 : int x=12,y=10; int a; a=x&y; //a=8 下麵是計算試子的和加減法一樣 二進位的個位,十位,百位,千位,分別對應的是1,2,4,8 二進位每多一位只需要乘2 那個個位置有1 就加上該位置的十進位數 。 上面說&運算時,當兩個二進位操作位都為1時,結果 ...
運算符 | 描述 |
---|---|
&(位與) | 當兩個二進位操作位都為1時,結果就為1 |
|(位或) | 當兩個二進位操作位有1個為1時,結果就為1 |
^(位異或) | 當兩個二進位操作位只有1個為1時,結果為1 |
~(位非) | 操作位的每個位都取反(就是0變成1,1變成0) |
<<(左移) | 二進位左移運算符。左操作數的值向左移動右操作數指定的位數。 |
>>(右移) | 二進位右移運算符。左操作數的值向右移動右操作數指定的位數。 |
pq實例圖
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
如下 :
int x=12,y=10;
int a;
a=x&y; //a=8
下麵是計算試子的和加減法一樣
二進位的個位,十位,百位,千位,分別對應的是1,2,4,8 二進位每多一位只需要乘2 那個個位置有1 就加上該位置的十進位數 。
上面說&運算時,當兩個二進位操作位都為1時,結果就為1
看個位 0&0 =0 十位 0&1=0 百位 1&0=0 千位1&1=1
換下來就是 1000(二進位) =8(十進位) 12&10=8
12|10,12^10 可以試著就算這個值
位非怎麼運算呢?
~12 直接位數取反 0變1,1變0 二進位左端1是位負數 在取反上-1
~12=-13;
要獲取他12的相反數 二進位表示 也是 取反 但是在結果上加1
左/右移 左移對移玩的位置補0 14<<3 二進位就是 1110>>1110 000
就是 14X2X2X2=112 14<<3=112
右移 切記負數右移是錯誤的 因為一個負數無論如何除2都不會乘位一個正數 14>>3=1