首页 > 代码库 > 类型转换、运算符、位运算符【以及原码、反码、补码】

类型转换、运算符、位运算符【以及原码、反码、补码】

1.类型转换
php中的‘+’与js有区别,php中+只是算术运算符【更偏向转化为数字】。js更偏向转化为字符串
 
php本身的自动转换类型便符合大多数对类型的处理。【也有强制转换的情形出现】
【注意转换关系:字符串转换成数字类型,开头的那部分字符串能够转化为数字(还要判断浮点型和整型)】
 
 
2.转换成布尔型【实现流程控制的关键】
以下值为false:
(1)布尔值为false
(2)整型值为0
(3)浮点型为0.0
(4)空字符串【字符串‘0‘(相当于是字符串做数组时是一个空字符串),区别,注意‘00’‘0.0’等情形】
(5)空数组【数组内没有元素的情况,与内部元素值是什么无关】
(6)null值
其余情况都是true
在判断时,必要情况下使用‘===’
HTML表单传递的值都是字符串!!!!【需要对post传入的值进行类型转化】
 
【注意这块对流程的控制】
isset【检查一个变量是否被设置:是否被定义(不需要赋值)】【只要被声明过就true】
empty【对于empty而言,就是相当于对变量做一次布尔的类型转换看是否是true/false,然后判断取反(true的时候empty之后返回false)】
【记不得变量转换布尔型的结果的规则时,对empty取反即可】
 
 
3.运算符
优先级是运算符的关键
echo 10%(-3);//1
echo (-10)%(-3);//-1
取模运算的正负由第一个决定。
 
 
4.字符串处理的方法【需要对字符串的截断处理心中有数】
 
$c=5;
echo $c++ + $c++ + $c++;//5,6,7【右加加的情况】
 
 
 
视频4
短路运算:如果在表达式中前面就能得到表达式的值,则不执行后面。
例:
$c=5;
$d = true || $c++;//true在||运算中很容易出现短路【同理:&&中的false也会出现短路】
var_dump ($c,$d);//5,true
 
 
 
 
位运算符:
bit:二进制表示中的每一位数值。
字节:byte【一个byte=8bit】【1KB=1024Byte】
一个整型数是四个字节【32位。这里的32位和计算机系统的32位还有区别】
【计算机系统中的32位表示cpu一次能够传输32位,也就是一次可以处理4个字节】
例子:
已知$a=9,$b=-4,分别求:$a&$b,$a|$b,~$b,$a^$b,$a>>2,$b<<2的值
需要将十进制转化为二进制,同时二进制的表示形式需要注意【原码,反码,补码】
【最高位表示符号位:所以能表示最大值为2^31-1】
【反码(只针对符号位是1的情况,也就是负数):最高位不变,其他位取反】
【补码(也针对符号位是1的情况):在反码的基础上加1】
 
计算机在底层进行运算时,以补码的形式进行【更加符合硬件底层进行运算】
【其实正所谓的反码和补码的运算都是针对减运算的模拟(形成正确的加运算)】
【运算完成之后再转化为原码】
 
位的左移相当于是乘以2的几次方
位的右移相当于除以2的几次方再取整
 
正是通过位运算模拟四则运算。
 
以上是位运算符。
 
 
错误控制运算符:
某些错误是没办法屏蔽的。【例如打开远程资源时报错的机制】
但是开发中的报错要尽量回避使用错误抑制运算符【错误抑制符的使用就是用在资源上的情况】

类型转换、运算符、位运算符【以及原码、反码、补码】