0920逻辑运算符,位运算,移位运算,三元运算符,短路性注意点

$a = $b++;

$a = $b;

$b= $b + 1;

 

$a = ++$b;

$b = $b + 1;

$a = $b;

 
xor 相同为false,不同为true

 

三元运算符 (expr1)?(expr2):(expr3);


我们知道,计算机里的信息,都是以0,1来存储的.
一个可以存储0/1的单元,称为位bit

8个位组成一个字节,Byte,
字节是计算机里最基本的单位

 位运算

12 = 0000 1100
5 = 0000 0101
----&---------
0000 0100
12 & 5 = 4;


12 = 0000 1100
5 = 0000 0101
----|---------
0000 1101

12 | 5 = 13;


12 = 0000 1100
5 = 0000 0101
----^---------
0000 1001

12 ^ 5 = 9;

& ,把2个二进制值对齐, 把1看成ture,把0看成false, 然后每个位上都做 并且 的运算 ,
| ,把2个二进制值对齐, 把1看成ture,把0看成false, 然后每个位上都做 或者 的运算 ,
^ ,把2个二进制值对齐, 把1看成ture,把0看成false, 然后每个位上都做 异或 的运算 ,



$a = 0000 1100;
按位求反~


0000 1100
~-----------
1111 0011



计算机里表示负数,是用补码的规则来计算的


具体这样来计算负数,假设有8位
最高位是1 得出符号是负

开始补码规则
计算除符号位之外,其他7位的绝对值
()111 0011 = 115;

然后再把 绝对值 - 2^7 = 115 - 128 = -13


因此:

1000 0001 ===> 不要想当然是 -1
而是 1 - 128 = -127

1111 1111 ===>
111 111==127 - 128 = -1


1000 0000 ==> -128
1111 1111 ===> -1
0000 0000 ===> 0
0111 1111 ====> 127

为什么 有人问: -128 +127

直观来理解 -127 -0,+0,+127



// 移位运算

5 = 0000 0101;
5 << 1;

0000 1010; // 10
相当于*2的效果

echo 5 << 1;

 



5 = 0000 0101
5 >>1 = 0000 0010 = 2;
相当于除2的效果

echo 5 >> 1;



$a = true;

$a++;++$a;不会影响bool的值

$a ----> bool(true);

 

三元运算符 与 if else的效率问题

转载于:https://www.cnblogs.com/zy2012/p/3359651.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值