- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
18.位与逻辑运算 PHP课件 必威体育精装版版
位与逻辑运算 与或非 位运算符 运算符 功能 说明 位与 对应两个位都是1,结果才为1,否则为0 | 位或 对应两个位中只要有一个为1,结果就为1,全为0时才为0 ~ 位非 按位取反操作,0变1,1变0 ^ 位异或 对应两个位不同时,结果为1,否则为0 位左移 操作符左边表达式的值左移右边指定的位数 位右移 操作符左边表达式的值右移右边指定的位数 在计算机中,任何数字、字母或符号都是以二进制形式存储的。二进制数可以方便地按位进行计算,由于二进制位只由0或1组成,所以计算起来相当简便。PHP中提供了位与、位或、位非、位异或,以及位右移和位左移等操作。 人肉计算机 三个学生,每人各拿一面黑旗和一面白旗 分别命名,【入1】和【入2】并排站,和【出】面对面 只有【入1】和【入2】都举黑旗时,【出】举黑旗,否则【出】举白旗 当【入1】或【入2】任意一个举黑旗时,【出】就举黑旗 去掉一个学生,只保留【入】和【出】,按相反举旗 位与、位或、位异或 这些运算就是我们常说的:与或非,两个二进制数,位对位进行比较,13的二进制是1101,9的二进制是1001 1101 1001 -------------- (按位与:两位都是1取1,否则取0) 1101(按位或:两位只要有一个是1就取1) 0100(按位异或:两位只要不同就取1,相同取0) 我们可以分别使用代码来模拟 echo 13 9; echo 13 | 9;echo 13 ^ 9; 显示二进制数 前面运算的结果仍然是十进制,有时候并不便于调试,我们可以将十进制转换成二进制来显示,同样使用printf(与sprintf类似,直接输出,不用echo) printf(%d, 13 ^ 9); 上面会正常显示4这个数字,如果把$d改成%b,那么printf会自动进行类型转换,将十进制转换为二进制显示 100,其他常用的类型还有:%o八进制%x十六进制 请思考,如果要显示0100,如何处理呢? 位非(按位取反) 按照我们的理解 echo ~13; 相当于 ~1101=0010(取非:每一位的1变为0,0变为1) 结果应该是2,可是实际结果是-14 实际上真正的公式应该为: ~num = -(num + 1) 负数的二进制表示 我们都知道正数的二进制表示方式 7的二进制是111,在32位中,实际上是 0000 0000 0000 0000 0000 0000 0000 0111 第一位是符号位,0表示正数 那么-7呢?第一位必须设置位1表示负数,剩下的数值,需要取反+1 1111 1111 1111 1111 1111 1111 1111 1001(这就是计算机中的-7) 而显示的时候,我们可以逆向计算,减1取反,就得到了7,加上负号就是-7 位非的计算 实际上,真正的位运算都是按照32位二进制来计算的,前面介绍的位与、位或、位异或即使使用32位,计算的结果仍然一样,所以我们可以忽略。 但是位非则不一样,1101补全32位再按位取反得到的是 1111 1111 1111 1111 1111 1111 1111 0010 第一位实际上是表示正负的符号位,因此本来是正数的数值变成了负数,究竟变成了什么负数?通过我们前面介绍的规则,减1取反,我们实际上得到的是-14 1000 0000 0000 0000 0000 0000 0000 1110 左移和右移 $a $b; $a表示一个数值,$b表示位数;左移后,多出来的位补0;右移后超出的位直接截掉 13 1 表示将1101左移1位,得到 11010(26) 13 1 将1101右移1位,得到1101(6) 1 1 0 1 1 1 0 1 1 1 0 1 0 位运算符的实际用途 error_reporting函数用来控制PHP的错误显示程度 int error_reporting ([ int $level ] ) 位运算符的实际用途 所有的错误级别使用16位二进制数来表示,每个错误占一个二进制位,目前PHP设置有15个错误类型 E_ERROR (1 = 0000 0000 0000 0001) E_WARNING (2 = 0000 0000 0000 0010) E_PARSE (4 = 0000 0000 0000 0100) E_NOTICE (8 = 0000 0000 0000 1000) …… E_USER_DEPRECATED(16384 = 0100 0000 0000 0000) 所有的错误等级都是常量,值可以转换为二进制 指定几类错误 E_ERROR | E_WARNING | E_PARSE (只允许显示这三种错误) 0000 0000 0000 0001 0000 0000 0000 0010 0000 0000
文档评论(0)