哎呀幾年過去,都快把大學學的計算機導論的知識給忘完了,現在來回顧一下按位去反的流程:
<?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 ~8;//-9
那麼這個-9是怎麼得來的呢?
8的原碼、反碼、補碼都是 :
00000000 00000000 00000000 00001000
取反(即~8)後得到:
11111111 11111111 11111111 11110111 //第一位是符號位,1代表負號,表示這是乙個負數;記住運算和運算結果都是用補碼表示的,這是某個數的補碼,我們還需要推導反碼和原碼
反碼=補碼-1,即:
11111111 11111111 11111111 11110110
原碼(符號位不變,其他位取反):
10000000 00000000 00000000 00001001
所以結果是:-9
?>
PHP匿點之位運算按位取反
我們看示例 a 8 var dump a 先不要看結果,試想下結果是多少?然後我們執行下看看,納尼?和我們設想的不一樣,奇怪了 什麼原因呢 於是我們翻看php中文手冊 a not 按位非 將 a 中為 0 的位設為 1,反之亦然。我只是簡單的理解為 0變1,1變0。原來按位取反以十進位制輸出並不是簡...
按位取反符號的介紹
前言 是我最近做面試題的時候遇到的符號,我不知道是什麼含義,上網上查詢之後才知道,下面我通過例題來說明這個符號使用之後的結果是什麼 例題 public class test what is the decimal value fo j at line5?a 0b 1 c 14 d 15 e an e...
python語言按位取反 python的按位運算
華電北風吹 天津大學認知科學與計算重點實驗室 最後修改日期 2015 8 6 python提供了豐富的位運算操作符,例如按位與,按位或,按位異或,左移位,右移位和取反操作,例子 如下 a,b 45,83 bin a bin b 0b101101 0b1010011 a b,bin a b 127,0...