注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

~~

~~

 
 
 

日志

 
 

php 位运算  

2013-08-18 20:17:11|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
计算机中是通过0,1来存储的;一个可以存储0/1的单位,称之为bit;8个bit称之为一个byte;计算机中最基本的单位是字节(byte).

按位运算符类型:
&  将两个要计算的二进制对其,1为true,0为false,并进行(并且)的运算;
|    将两个要计算的二进制对齐,1为true,0为false,并进行(或者)的运算;
^   将两个要计算的二进制对齐,1为true,0为false,并进行(异或)的运算;
~   按位求反,在计算机中表示负数是通过补码来实现的;
<<或者>>  移位运算


如:&应用:

$a = 8 & 5;
运算过程如下:(现将8和5转换为二进制)
       8   =    0000 1000
       5   =    0000 0101
    ---------------------------
                  0000 0000

则输出$a = 0;

| 的应用:

$b = 8 | 5;
运算过程如下:
        8   =    0000 1000
        5   =    0000 0101
    ---------------------------     
                   0000 1101

则输出 $b = 13;
   
^ 的应用:

$c = 12 ^ 5;
运算过程如下:(相同的为0,不同的为1)

       12  =   0000 1100
        5   =   0000 0101 
    ---------------------------  
                  0000 1001

则输出$c = 9;

~ 的应用:
假设有8位,最高位为1,则可以得出在按位取反后得到的为负数;开始补码,计算除符号位(即8位中的第一位)之外其他7为的绝对值,然后将得到的这个绝对值 - 2^7 (2的7次方)

具体用法:
$d = ~13;

1. 现将13转换为二进制
2.
0000 1101
---------------   //进行取反
1111 0010    先转换为10进制为  2^6 + 2^5 + 2^4 + 2^1 + 2^0= 64 + 32 + 16 + 1 + 1= 114
                           然后用 114 - 2^7  = 114 - 128  = -14;
                             即输出 $d = -14;

<<与>>的使用
 $e = 8 << 1;
         8转换为二进制为  
                  0000 1000
               -------------------  向左移动一个位置
                  0001 0000

         则输出$e = 16;

$f  = 8>>1;
        8转换为二进制为
                  0000 1000
                -----------------
                  0000 0100
        则输出 $f = 4;



源自:www.zixue.it 位运算学习总结




  





  评论这张
 
阅读(255)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018