一、二進位制
二進位制的最高位是符號位:0表示正數,1表示負數
正數 的原始碼反碼,補碼,都一樣
負數的反碼=它的原始碼 符號 位不變,其它位取反(0->1,1->0)
負數的補碼=它的反碼+1
0的反碼補碼都是0
php沒有無符號數
在計算機 運算 的時候,都是以補碼的方式來運算的
例:-1 的原始碼 10000000 00000000 00000000 00000001
-1 的反碼 11111111 11111111 11111111 11111110
-1 的補碼 11111111 11111111 11111111 11111111
二、位運算
按位與& :兩位全為1,結果為1
按位或| :兩位有乙個為1,結果為1
按位異或^:兩位乙個為0,1個為1,結果為1
按位取反~:0->1,1->0
右移》:向右移動n次(除以2的n次方),低位溢位,並用符號位補溢位的高位,符號位不變
左移<<:向左移動n次(乘以2的n次方),低位補0,符號位不變
例&:2&3=?
2的補碼 00000000 00000000 00000000 00000010
3的補碼 00000000 00000000 00000000 00000011
2&3的補碼 00000000 00000000 00000000 00000010(補碼)
例|:2的補碼 00000000 00000000 00000000 00000010
3的補碼 00000000 00000000 00000000 00000011
2|3 00000000 00000000 00000000 00000011
例^:2的補碼 00000000 00000000 00000000 00000010
3的補碼 00000000 00000000 00000000 00000011
2^3 00000000 00000000 00000000 00000001
例~:~2=?
步驟:1.首先求出2的補碼,2是整數,所以 原碼=反碼=補碼
00000000 00000000 00000000 00000010
2.取反後,為 ?的補碼
11111111 11111111 11111111 11111101
3.?的補碼-1,為 ?的反碼
11111111 11111111 11111111 11111100
4.?的反碼取反,為 ?的值
10000000 00000000 00000000 00000011 => -3
例》:1>>2=?
1的補碼 00000000 00000000 00000000 00000001
右移2位 00(《補位)00000000 00000000 00000000 000000(截斷)01
例》:-1>>2=?
-1的原碼 10000000 00000000 00000000 00000001
-1的反碼 11111111 11111111 11111111 11111110
-1的補碼 11111111 11111111 11111111 11111111
右移2位 11111111 11111111 11111111 11111111(補碼)
補碼-1 11111111 11111111 11111111 11111110(反碼)
取反碼 10000000 00000000 00000000 00000001
例<<:
1<<2=?
1的補碼 00000000 00000000 00000000 00000001
左移2位 00(截斷)000000 00000000 00000000 00000001(補位》)00
例<<:
-1<<2=?
-1的原碼 10000000 00000000 00000000 00000001
-1的反碼 11111111 11111111 11111111 11111110
-1的補碼 11111111 11111111 11111111 11111111
左移2位 11111111 11111111 11111111 11111100(補碼)
補碼-1 11111111 11111111 11111111 11111011(反碼)
取反碼 10000000 00000000 00000000 00000100
echo 6&3;//2echo "
";echo 6|3;//7
echo "
";echo 6^3;//5
echo "
";echo ~6;//-7
echo "
";echo 6>>3;//0
echo "
";echo 6<<3;//48
echo "
";echo -6&3;//2
echo "
";echo -6|3;//-5
echo "
";echo -6^3;//-7
echo "
";echo ~-6;//5
echo "
";echo -6>>3;//-1
echo "
";echo -6<<3;//48
位運算筆記
10 1010 12 1100 與例如 以下按位比較,當兩個同時為1則為1,否則為0 10 1010 12 1100 結果為 8 1000 或例如 以下按位比較,當兩個有任何乙個為1則為1,否則為0 10 1010 12 1100 結果為 14 1110 非例如 以下按位比較,當兩個數不同時則為1否...
筆記 位運算
1 格式 x y 2 規則 對應位均為1時才為1,否則為0。例如,3 9 1 0011 1001 0001 3 主要用途 取 或保留 1個數的某些位,其餘各位置0。1 格式 x y 2 規則 對應位均為0時才為0,否則為1 3 9 11。例如,3 9 11 0011 1001 1011 3 主要用途...
位運算筆記
需要掌握的知識 原碼 反碼 補碼 原碼 是最簡單的機器數表示法。用最高位表示符號位,1 表示負號,0 表示正號。其他位存放該數的二進位制的絕對值。1010 最高位為 1 表示這是乙個負數,其他三位為 010 即 0 2 2 1 2 1 0 20 2 表示冪運算子 所以1010表示十進位制數 2 面臨...