您的位置:首页 > 编程语言 > PHP开发

php学习之------[运算符相关概念]

2011-05-29 21:43 381 查看
<?php
/*运算符号(PHP)操作符号
*
*	按运算符号功能分为:
*	一、算术运算符   + - * / % ++ --
*	二、字符串运算符 . 连接运算符
*	三、赋值运算符   = += -= *= /= %= .=
*	四、比较运算符   > <  >= <= == === != <> !==
*		比较运算符---条件运算符---关系运算符
*		比较后的结果只有一种:boolean true false
*		=== 比较时不仅要求内容相同,也要求类型相同
*		!== 比较时内容不相同,也要求类型不相同
*	五、逻辑运算符   &&或and ||或or  !或not
*		逻辑运算符只能操作bool型的值,返回的也是bool型的值
*	六、位运算符     &  |  ^  ~  << >>  >>>
*	七、其他运算符   ?  :  ``   @  =>  ->   ::  & $
*		``  用来执行操作系统内核
*		@   用来屏蔽掉错误信息
*	建议使用“()”改变表达式的优先级别
*
*	% 有两个目的:整除运算;控制范围,不要用小数,也不要用负数
*	% 会吧运算符两边的数转为整数后再进行整除求余。
*/

//用 %符号判断闰年
$year=2011;
if(($year%4==0 && %year%100!=0) || $year%400=0)
{
echo "run nian";
}
else
{
echo " not run nian";
}

// ++  --符号的使用
$a=10;
$a++;	//$a=$a+1;	先用变量,再自增1
++$a;	//$a=$a+1;	先自增1,在用变量
$a--;	//$a=$a-1;	先用变量,再自减1
--$a;	//$a=$a-1;	先自减1,再用变量
echo $a; //结果为10

//++ -- 运算的区别
$a=10;
$b=$a++;//b=10,a=11
$c=--$b;//c=9,b=9
$d=$c++ + ++$c; //d=20,c=11
$e=$d-- - --$d; //d=18,e=2
echo $d;

//字符串运算符 .   的使用
$name="tom";
$age=27;
$height=1.75;
echo "我的名字是:{$name}我的年龄是:{$age}我的身高是:{$height}米<br>";
echo '我的名字是:'.$name.'我的年龄是:'.$age.'我的身高是:'.$height.'米'.'<br>';
echo "\$age=".$age; //$age=27

echo "我的名字是:{$name}我的年龄是:{$age}我的身高是:{$height}米<br>";//赋值运算符的使用
$a=10;
$a+=10; //$a=$a+10;
$a-=10; //$a=$a-10;
$a*=10; //...
$a/=10; //...
$a%=10; //$a=$a%10;
$a.="abc";//$a=$a."abc";
echo $a;
$str='<table>';
$str.='<tr>';
$str.='<td>';
$str.='</td>';
$str.='</tr>';
$str.='</table>';
echo $str;//输出一个表格

//比较运算符
var_dump(15>6);//返回 bool(true)
$a=15;
if(15==$a)
{
echo "a=15";
}
else
{
echo "a!=15";
}

//逻辑运算符的使用
var_dump(true && true);//true
var_dump(true && false);//false
var_dump(true || false);//true
var_dump(!true);//false
var_dump(!false);//true
//判断用户名密码
$username="admin";
$password="123456";
$email="290080604@qq.com";
if($username=="admin" && $password="123456")
{
echo "用户名密码正确";
}
if($username=="" || $password=="" || $email=="")
{
echo "一个都不能为空";
}

//位运算符
$a=20;  //00010100
$b=30; // 00011110
/*
*   20  00010100
*   30  00011110      &
*-----------------------------------
*	 00010100
*
*/
$c=$a & $b;
echo $c;

/*补充,&  |  也可以用做逻辑运算
* &&和||的 短路问题:
* 	&&在作运算时,如果前面的数为false,则后面是否为true,整个表达式都为false,所以就不去执行后面的操作数;
* 	||在作运算时,如果前面的数为true,则后面的数是否为false,整个表达式都为true,所以就不去执行后面的操作数;
* 	然而,& 或者 | 在作运算时,两边都会被执行
*/
$a=10;
if($a>5 || $a++<100){}
echo $a;//输出10
$b=10;
if($b>5 | $b++<100){}
echo $b;//输出11

/*
位的概念:一个位是由8个二进制数组成的(例00000000),
一个字节由8个位组成,那么就有32个二进制数。

原码:最高位 用0表示正数,1表示负数

+7  00000111
-7  10000111

反码:一个数如果为正,则它的反码与原码相同;
一个数如果为负,则符号位为1,其余各位是对原码取反;
+7  00000111
-7  11111000

+0  00000000
-0  11111111

补码:一个数如果为正,则它的补码与反码与原码相同
一个数如果为负,则它的补码=反码+1,去掉最高位的溢出位

-7  原码 10000111  反码11111000
+1
补码11111001

已知一个负数的补码,把它转换为十进制数。
1.先对各位取反
2.将其转换为十进制数
3.加上负号,再减去1。

例:补码11111010
取反00000101
4+1=5
-5-1=-6

位运算符:
& 按位与     |按位或    ^按位异或 ~按位取反

例:  按位与   01101101
&00110111
00100101
结论:只有1 1为1。
按位或   01101101
|00110111
01111111
结论:只有0 0为0。
按位异或 01101101
^00110111
01011010
结论:只有1 0或0 1时为1。(也可以理解为处于不同状态为1(真))
按位取反 ~00110111
11001000
结论:将0变1,1变0

移位运算符:
左移:<<       带符号右移:>>     无符号右移:>>>

例:数   x         x<<2         x>>2     x>>>2
17 00010001   01000100    00000100  00000100
-17 11101111   10111100    11111011  00111011
结论:正数左右移动都补0,负数左移补0,带符号右移补1,不带符号补0

*/

//其他运算符的运用
$a=10;
$b=$a>5 ? $a : 5;//三元运算符,如果成立$b=$a否则$b=5
echo $b;

//用``来执行操作系统shell命令
$str=`ipconfig /all`;
echo '<pre>';
echo $str;
echo '</pre>';

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: