$i=9;
$j = 1;
-
加减乘除
示例 运算 结果 -$j 取反 -1 j 加法 10 j 减法 8 j 乘法 9 j 除法 9 j 取余 0 j 求幂 9 -
++和--运算
++和--在前面是先运算,在后面是先赋值
i;//$k值是10
j++;//$l值是1
-
+=和-=
i;//等同于k+$i;
i;//等同于k-$i;
-
按位运算
-
10进制转二进制的函数decbin,二进制转10进制的函数bindec
-
$i的二级制是1;//补0后0001
-
$j的二进制是1001;
-
1)、按位与运算 (&)表示对应位数都为1,才取1,否则取0
-
i&j;//1,运算结果0001即等于1。
-
2)、按位或运算(|)表示对应位数有一个为1就取1
-
j;//9,运算结果1001,10进制就是9。
-
3)按位异或(^)表示对应位数不同就取1,否则取0
-
i^j;运算结果是1000,10进制是8。
-
4)、按位取反(~)当前位是0就取1,否则取0
-
~$j;
-
运算过程:$j补全32位是 00000000 00000000 00000000 00001001
-
取反结果是11111111 11111111 11111111 11110110
-
第一位是符号位(0表示整数,1表示负数),说明~$j是一个负数。
-
负数是原码取反加1得出来的,那么反推,原码减1,得出
-
11111111 11111111 11111111 11110101
-
符号位不变取反:10000000 00000000 00000000 00001010
-
即-10;
-
~-9;
-
-9补全32位10000000 00000000 00000000 00001001
-
取反的:011111111 11111111 11111111 11110110
-
正数是原码取反-1得出来的
-
原码加1得011111111 11111111 11111111 11110111
-
符号位不变取反得00000000 00000000 00000000 00001000
-
即:8;