很多站长朋友们都不太清楚php取反符号,今天小编就来给大家整理php取反符号,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php小白 请问与 或 异或 取反是什么意思? 2、 php的分隔符是哪一个 3、 PHP 按位取反 运算符(~) 到底怎么算出来的? $a = 8 $b = ~$a echo $b 结果是 - 9 4、 PHP语言PHP语言里的位运算符&、|、^ 、~、〈〈 、〉〉这些符号我一个也不懂,希望高手给个全面的解释!拜 php小白 请问与 或 异或 取反是什么意思?这些是数学逻辑运算,并不是PHP才有,这里涉及到一个布尔型数据类型的含义(真则为1,假则为0)
举个例子,假设有条件a和条件b
与关系:变量$c = $a $ b,只有$a与$b两个条件都满足时($a为真,判断结果等于1;且$b为真,判断结果等于1),c才为真($c = 1),否则c为假($c = 0)
或关系:变量$c = $a ||$ b,只要$a或者$b有其中一个满足时($a真$b假,$a假$b真,$a真$b真),$c为真
异或关系:变量$c = $a ^ $b,只要$a、$b条件判断结果不同($a真$b假,$a假$b真),则$c为真
取反:$c = !$a,当条件$a为真($a = 1)则$c = 0;$a为假($a = 0)则$c = 1;
php的分隔符是哪一个分隔符可以使任意非字母数字、非反斜线、非空白字符。经常使用的分隔符是正斜线(/)、hash符号(#)
以及取反符号(~)
PHP 按位取反 运算符(~) 到底怎么算出来的? $a = 8 $b = ~$a echo $b 结果是 - 9在数值范围内,~a = -(a+1)
8的二进制是1000,补满32位,也就是前面28个0 1000
取反后 28个1 0111
第一位是符号位 1代表负数,剩下的27个1 0111
负数是用补码表示的,补码是原码取反+1,也就是说 27个1 0111 是某个数的补码,那倒推回去,这个数就是补码-1后取反,也就是 27个1 0110取反,得到27个0 1001,也就是9,再加上前面的符号位,得到-9
PHP语言PHP语言里的位运算符&、|、^ 、~、〈〈 、〉〉这些符号我一个也不懂,希望高手给个全面的解释!拜"" 按位与运算
按位与运算符""是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:95可写算式如下:
00001001 (9的二进制补码)
00000101 (5的二进制补码)
00000001 (1的二进制补码)
<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a$b);
?>
"|" 按位或运算
按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下:
00001001
|00000101
00001101 (十进制为13)可见9|5=13
<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a|$b)."\n"; //二进制
echo sprintf("%d", $a|$b)."\n"; //十进制
"^" 按位异或运算
按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:
00001001
^00000101
00001100 (十进制为12)
<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a^$b)."\n"; //二进制
echo sprintf("%d", $a^$b)."\n"; //十进制
"~" 求反运算
求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
例如~9的运算为:
~(0000000000001001)结果为:1111111111110110
<?php
$a = 9;
$b = 5;
echo sprintf("%b", ~$a)."\n"; //二进制
"〈〈" 左移运算
左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。
例如:
a<<4
指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
<?php
$a = 3;
$temp = $a<<4;
echo sprintf("%d", $temp)."\n"; //十进制
“>>” 右移运算
右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:
设 a=48,
a>>4
表示把00110000右移为00000011(十进制3)。
应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定
<?php
$a = 48;
$temp = $a>>4;
echo sprintf("%d", $temp)."\n"; //十进制
关于php取反符号的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。