您的位置:首页 > 编程语言 > PHP开发

php学习笔记--位运算

2013-04-27 07:16 351 查看
2进制和位运算

1--计算机的世界里,他们只能识别2进制(0和1可以通过电流简单方便的实现)。
2--2进制里面最高位是用来表示符号的,0为正,1为负。
3--原码是指一个数用2进制表示形态,如3(十进制)原码是00000000 0000000 000000 00000011
4--整数的原码 补码 反码 都是一样的。
5--负数的反码是符号位不变,其他反转。-1的反码如下
10000000 00000000 00000000 00000001
11111111 11111111 11111111 11111110
6-负数的补码是他的反码+1 例如-1的补码
原码 10000000 00000000 00000000 00000001
反码 11111111 11111111 11111111 11111110
补码 11111111 11111111 11111111 11111111
7--0的补码还是0
8--在计算机运算的时候都是以补码进行运算的,不管是正数还是负数。
9--位运算有如下几种,(位置还包括符号位)
1-按位与(&):两个数,相同位置都为1,则为1,否则为0;
2-按位或(|):两个数,相同位置其中有一个以上为1(1个或2个),就为1,只有两个都为0 ,才为0.
3-按位异或(^):两个数,相同位置其中只有一个为1(只能一个),就为1,两个如果相同就为0.
4-按位取反(~):把原先为1的变为0,为0的变为1.
exp:
~2的值是-3 推算如下。
补码 00000000 00000000 00000000 00000010
取反 11111111 11111111 11111111 11111101 (这个不是最终答案,因为这个时候状态是补码状态,我们要转为源码)
反码 11111111 11111111 11111111 11111100 (补码-1得到的是反码,反码再逆推原码)
原码 10000000 00000000 00000000 00000011 (结果就是-3了)
10-位移运算
算术左移:符号为不变,低位补0
exp: 1<<2
补码 : 00000000 00000000 00000000 00000001
左移 :00000000 00000000 00000000 00000100
算术右移:低位溢出。符号位不变。并用符号为补充溢出的低位
exp:1>>2(在计算机中运算都是以补码进行的)
补码 : 00000000 00000000 00000000 00000001
右移 :00000000 00000000 00000000 00000000
exp: -1>>2
原码 : 10000000 00000000 00000000 00000001
反码 : 11111111 11111111 11111111 11111110
补码 :11111111 11111111 11111111 11111111
右移 : 11111111 11111111 11111111 11111111本文出自 “冷爱” 博客,请务必保留此出处http://lengai.blog.51cto.com/6373868/1187993
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: