php运算符的特殊用法
前言
這些運算符的使用,在這里默認是在php環境中
計算機碼
計算機內部都是使用二進制進行數據保存,在計算機中數據(數值)分為有符號數據(區分正負)和無符號數據(全部代表數值)。而在正負數之間存在一個+0和-0的關系,為了正確的識別正負數(左側最高位:0表示正,1表示負),所以產生了所謂的計算機碼。
計算機碼分類
原碼:數值絕對值轉換成的二進制
反碼:符號位不變,其他位取反(負數)
補碼:反碼加1(負數)
其中,規定正數的原碼、反碼和補碼一致,負數有原碼、反碼和補碼之分
示例
位運算符
位:bit是計算機存儲的最基本單位,只有兩個值,0或1,位運算就是使用最基本的位上的值參與運算。
^:按位異或,兩個位進行運算,兩個不同則為1,相同則為0
~:按位取反,一個位進行運算,原來為0則變成1,為1則變成0
<<:按位左移,將所有的位向左移動右側指定的位數,左側溢出,右側補0
>>:按位右移,將所有的位向右移動右側指定的位數,右側溢出,左側補符號位(正數為0,負數為1)
&:按位與,兩個位進行運算,都為1則返回1,否則返回0
|:按位或,兩個位進行運算,一個為1就返回1,都為0返回0
注:
1、系統進行任何位運算的時候都是使用的補碼
2、運算結束之后都必須轉換成原碼才是最終要顯示的數據
一、^
介紹:^表示異或運算
異或運算規則:將十進制轉換為補碼后異或
例如:10^24
計算過程:
Tip:0^未知數,結果都是未知數
二、~
介紹:~表示取反運算,即將補碼全部取反,例:0000,取反后為1111,但常常并不是這樣使用,通常如下:
例如:~9,但它的值為-10,why?
取反運算規則:
1、原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1
2、補碼計算
(1)正數的補碼表示:正數的補碼 = 原碼
(2)負數的補碼 = {原碼符號位不變} + {數值位按位取反后+1} or = {原碼符號位不變} + {數值位從右邊數第一個1及其右邊的0保持不變,左邊按位取反}
具體可以參考:https://zhidao.baidu.com/question/148760603.html
計算過程:
Tip:最后總結一下,如果想要666或者999等指定的,可以直接~~666或~~999
三、<<或>>
介紹:左移運算是將一個補碼位的操作數按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。右移運算是將一個補碼位的操作數按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位一律補0,或者補符號位,這由不同的機器而定。
例:10<<3和10>>3
計算過程:
四、&
介紹:&表示位運算符
與運算的規則:0&0=0;0&1=0;1&0=0;1&1=1,即兩位同為1,結果為1,否則為0
例:10&24
計算過程:
五、|
介紹:|表示或運算
或運算規則:0&0=0;0&1=1;1&0=1;1&1=1,即或運算的兩個數只要有一個值為1,那么結果就為1
例:10|24
計算過程:
總結
以上是生活随笔為你收集整理的php运算符的特殊用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 徒弟对师傅的感恩寄语169个
- 下一篇: ctf.show-萌新计划(1-7)