php位運算 與 或 異或 取反

<?php
/**
php中有4個位運算,分別是&與 |或 ^異或 ~取反
& 兩位全爲1,結果爲1
| 有一位爲1,結果爲1
^ 一個爲0,一個爲1,結果爲1
~ 取反0->1,1->0

1.二進制的最高位是符號位,0表示正數,1表示負數。
2.正數的原碼,反碼,補碼都同樣。
3.負數的反碼=它的原碼符號位不變,其它位取反(0->1,1->0)。
4.負數的補碼=它的反碼+1。
5.0的反碼,補碼都是0.
6.php沒有無符號數,換言之,php中的數都是有符號的。
7.在計算機運算的時候,都是以補碼的方式來運算的。

**/

 

//異或
echo 13&7;

echo "<br/>";
echo 5|4 ;

echo "<br/>";
echo -3^3;

//推理過程:

/**

13&7

13的補碼  00000000 00000000 00000000 00001101
7的補碼   00000000 00000000 00000000 00000111
13&7      00000000 00000000 00000000 00000101   = 5

5|4

5的補碼 00000000 00000000 00000000 00000101
4的補碼 00000000 00000000 00000000 00000100
5|4      00000000 00000000 00000000 000000101   =5

-3^3

-3的補碼
-3的原碼 10000000 00000000 00000000 00000011
-3的反碼 11111111 11111111 11111111 11111100
-3的補碼 11111111 11111111 11111111 11111101
php位運算 與 或 異或 取反
複製代碼
<?php
/**
php中有4個位運算,分別是&與 |或 ^異或 ~取反
& 兩位全爲1,結果爲1
| 有一位爲1,結果爲1
^ 一個爲0,一個爲1,結果爲1
~ 取反0->1,1->0

1.二進制的最高位是符號位,0表示正數,1表示負數。
2.正數的原碼,反碼,補碼都同樣。
3.負數的反碼=它的原碼符號位不變,其它位取反(0->1,1->0)。
4.負數的補碼=它的反碼+1。
5.0的反碼,補碼都是0.
6.php沒有無符號數,換言之,php中的數都是有符號的。
7.在計算機運算的時候,都是以補碼的方式來運算的。

**/

 

//異或
echo 13&7;

echo "<br/>";
echo 5|4 ;

echo "<br/>";
echo -3^3;

//推理過程:

/**

13&7

13的補碼  00000000 00000000 00000000 00001101
7的補碼   00000000 00000000 00000000 00000111
13&7      00000000 00000000 00000000 00000101   = 5

5|4

5的補碼 00000000 00000000 00000000 00000101
4的補碼 00000000 00000000 00000000 00000100
5|4      00000000 00000000 00000000 000000101   =5

-3^3

-3的補碼
-3的原碼 10000000 00000000 00000000 00000011
-3的反碼 11111111 11111111 11111111 11111100
-3的補碼 11111111 11111111 11111111 11111101

3的補碼 00000000 00000000 00000000 00000011

-3^3     11111111 11111111 11111111 11111110  《補碼》
 推反碼《對補碼-1》
  11111111 11111111 11111111 11111101   《反碼》
推原碼《符號位不變 其餘取反》
  10000000 00000000 00000000 00000010   《原碼》  =-2

注意:由於二進制沒有進位和退位,能夠看作是10-1,那就等於1了

**/
?>
 
    

 



3的補碼 00000000 00000000 00000000 00000011

-3^3     11111111 11111111 11111111 11111110  《補碼》
 推反碼《對補碼-1》
  11111111 11111111 11111111 11111101   《反碼》
推原碼《符號位不變 其餘取反》
  10000000 00000000 00000000 00000010   《原碼》  =-2

注意:由於二進制沒有進位和退位,能夠看作是10-1,那就等於1了

**/
?>
相關文章
相關標籤/搜索