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
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
相关文章推荐
- PHP学习笔记第【8】天(2014.11.08)——javascript学习
- PHP学习笔记——PHP单路分支和双路分支,else if多项条件分支结构;
- PHP学习笔记第【17】天(2014.11.22)——位运算
- 我的PHP学习笔记(一)
- php学习笔记(13):PHP+MYSQL简单分页
- PHP开发学习笔记之mysql操作
- 2009-2010寒假php学习笔记
- php学习笔记之封装练习题
- PHP学习笔记——PHP的运算符号;
- PHP学习笔记——运算符
- php学习笔记(二十三)PDO的预处理语句的查询以及结果集的使用
- php学习笔记(十)文件的上传与下载
- php学习笔记(三)——操作符与控制结构
- PHP学习笔记(1)-php与C 操作符的区别(总结)
- PHP学习笔记【17】--PHP错误日志
- PHP学习笔记----PHP文件编程
- Zend & PHP 学习笔记
- PHP学习笔记 -- 初识PHP
- PHP学习笔记——超全局数组介绍(上)
- 两千行PHP学习笔记