<?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了 **/ ?>