-
算術運算符
對變量和數組進行算術運算。
算術運算符:+,-,*,/,%
+:將連個或者多個數值相加
-:將兩個數值相減
*:將兩個數值相乘
/:將兩個數值相除
%:取相除的余數
-
賦值運算符
將右邊的值(計算結果)賦值給左邊的變量
賦值運算符:=,+=,-=,*=,/=,%=,.=
=:賦值,將右邊的值賦值給左邊的變量
+=:將左邊的變量的值加上右邊的結果之后,再將值賦值給左邊的變量
-=,*=,/=,%=,.=都是一樣的效果
注意!!!“.”十分特殊,表示一種字符串連接運算
抑制錯誤,不讓錯誤出現
錯誤抑制符:@
三元運算符
參與運算的表達式有三個
語法:表達式1 ? 表達式2 : 表達式3
如果表達式1為真,那么計算表達式2,否則計算表達式3
<?php $wenheichouwa = "ishere"; $res = ($wenheichouwa=="ishere")?"喜歡小烤腸和小松鼠":"喜歡昌仔"; echo $res."<br/>"; $duwa = &$wenheichouwa; $duwa = "nothere"; echo $res."<br/>"; echo $wenheichouwa."<br/>"; echo $duwa."<br/>"; $res = ($wenheichouwa=="ishere")?"喜歡小烤腸和小松鼠":"喜歡昌仔"; echo $res."<br/>"; ?>
-
自操作運算符
自己操作自己的運算符
自操作運算符:++,--
++:分為前置++和后置++,$a = $a + 1
前置++:++$a,
后置++:$a++
通常,在循環中,使用自運算比較,用戶控制循環變量。
-
字符串運算符
連接字符串
字符串運算符:.和.=
$a = ‘hello ’;
$b = ‘world’;
.:表示兩個字符串連接,不會改變原來的變量本身
$c = $a . $b;
.=:將兩個字符串連接起來后再賦值給左邊的變量
$a .= $b <===========> $a = $a . $b;
-
位運算符
針對系統硬盤上存儲的位進行操作(實際操作是以字節為單位),位運算在計算過程中,每個位的操作返回的結果都是1或者0
位運算符:&,|,~,^,>>,<<
&:按位與,表示兩個位都為1時,則返回1,否則返回0
|:按位或,表示兩個有一個為1的時候,返回1,否則返回0
~:按位非,如果本身為0,則返回1,如果本身為1,則返回0
^:按位異或,如果兩位不相同時,則返回1,如果兩位相同則返回0
>>:按位右移,將整個字節向右移一位,左邊空出來的使用0補充
<<:按位左移,將整個字節向左移一位,右邊空出來的使用0補充
右移運算乃是原來的結果右移幾位就除以幾個2,然后向下取整,左移運算是原來的結果左移幾位就乘以幾個2;
<?php
$mynum=5;
echo "mynum左移5位的最終結果是".($mynum<<6)."<br/>";
$hisnum=6;
echo "hisnum右移2位的結果是".($hisnum>>2)."<br/>";
?>
-
原碼,反碼,補碼
原碼----一個數的二進制形式
反碼----一個數二進制按位取反
補碼----一個數二進制按位取反並加1,一個正數的原碼,反碼,補碼都相同
存儲的實際情況----正數以原碼的形式存儲,負數以補碼的形式存儲。
以整數1為例,我們知道php的整型數占4個字節,每個字節占8位,正數的原碼,反碼,補碼又都相同,正數的最高位是0,所以對於1有 #原碼 00000000 00000000 00000000 00000001 #反碼 00000000 00000000 00000000 00000001 #補碼 00000000 00000000 00000000 00000001
負數反碼。補碼的錯誤操作形式
而對於-1來說,按照既定原則,最高位應該為1,所以他的原碼形式為 #原碼 10000000 00000000 00000000 00000001 反碼就是各位取反 #反碼 01111111 11111111 11111111 11111110 補碼就是反碼各位再加1
01111111 11111111 11111111 11111110
+
00000000 00000000 00000000 00000001
=
01111111 11111111 11111111 11111111
但是問題顯然出現了,最終結果 01111111 11111111 11111111 11111111 明顯是個正數!
所以對於負數來說,他的反碼形式是 最高位不動,其余的位取反
正確姿勢,負數的反碼最高位不變,其他位取反 -1的反碼 #反碼11111111 11111111 11111111 11111110 補碼 = 反碼+1 11111111 11111111 11111111 11111110 + 00000000 00000000 00000000 00000001 = 補碼為 11111111 11111111 11111111 11111111
php提供了幾常見進制之間轉換的函數
二進制轉為其他進制
binoct();//轉為八進制
bindec();//轉為十進制
binhex();//轉為十六進制
八進制轉為其他進制
octbin();//轉為二進制
octdec();//轉為十進制
octhex();//轉為十六進制
十進制轉為其他進制
decbin();//轉為二進制
decoct();//轉為八進制
dechex();轉為十六進制
十六進制轉為其他進制
hexbin();轉為二進制
hexoct();//轉為八進制
hexdec();//轉為十六進制