设为首页 收藏本站
查看: 599|回复: 0

[经验分享] PHP 位运算

[复制链接]

尚未签到

发表于 2015-8-27 09:47:26 | 显示全部楼层 |阅读模式
  位运算:
一、先求出二进制:
-3原码: 10000000 00000000 00000000 00000011  
-3反码: 11111111 11111111 11111111 11111100 //取反,但符号位不变。
-3补码: 11111111 11111111 11111111 11111101 //反码加1
注意:
1、正数的原码、反码、补码都是一样的。
2、计算机运算是以补码形式进行的,故计算时先统一转成补码,计算后(补码)逆转成原码。
二、按位与& :除去符号位,同1为1。
例:-3&2
-3 补码:11111111 11111111 11111111 11111101
2 补码:00000000 00000000 00000000 00000010     
结果补码:00000000 00000000 00000000 00000000//最高位也参与运算,因为一正一负,总得有个了断吧
     结果:0,由于正数三码统一,故处已是结果,补码即原码。
例:-3&-6
-3 补码:11111111 11111111 11111111 11111101
-6 补码:11111111 11111111 11111111 11111010
结果补码:11111111 11111111 11111111 11111000
结果反码:11111111 11111111 11111111 11110111//补码减1
结果原码:10000000 00000000 00000000 00001000 //反码再求反之后,-8
总结:
1、有正为正。
2、在结果为负,并且左边全是1,右边全是0,则结果从最后一个 1 取到最后,即:11111000 => 1000 => 8 => -8
2、当一个负数是2^n时,它的补码:补码等于原码有效数字所位,前补1,后补0。
-8 => 1 <1> 000 => 11000 //当然,前面还可以补许多1,但没意义,只要位数够运算就行
-2 => 1 <1> 00 =>  11100
11000
11100
11000//结果补码,结果便是:1000 => 8 取负,-8
三、按位或| :除去符号位,有1为1
例:-3|-6
-3 补码:11111101
-6 补码:11111010
结果补码:11111111
结果反码:11111110//补码减1
结果原码:00000001 //反码再求反,-1
总结:
1、有负为负。
四、按位异或^ :相异为1,相同为0
例:-3^-6
-3 补码:11111101
-6 补码:11111010
结果补码:00000111//已然为正,故为7
总结:同号为正,异号为负。
五、按位取反~ :0、1互换
例:~-3
-3 补码:11111101
结果补码:00000010//已然为正,故为2
总结:正负相换。
六、按位右移>> : 排除符号位,二进制数整体向右移动。
7 >> 2 => 0111 => 0001 = 1 // 这里向右移动了2位,最低位的两个1被抹去。
七、按位左移<< : 与上同理。
7 << 2 => 0111 => 011100 = 28 // 这里向右移动了2位,最低位的两个1被抹去。
总结:右移两位等于除了2的二次方,7/4 = 1 在整数除法中则看成是被舍掉了小数部分。左移就是剩以2的二次方,PHP没有无符号右移运算符>>>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104874-1-1.html 上篇帖子: 【php数组函数序列】之array_unique() 下篇帖子: Ajax+PHP简单实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表