标题: PHP基础知识--字符串的位操作
Haohappy
超级版主
Rank: 8Rank: 8
PHPEye站长


UID 2
精华 11
积分 110
帖子 283
翻译 6
原创 1
阅读权限 150
注册 2007-5-2
状态 离线
发表于 2007-8-12 20:00  资料  短消息  加为好友  添加 haohappy 为MSN好友 通过MSN和 haohappy 交谈
PHP基础知识--字符串的位操作

基础知识,为《Programming PHP》的读者解答的。

PHP中所有位操作符都可用于数字和字符串。如果是数字,要转换为二进制;如果是字符串要先转成ACSII值,再转为二进制数。

例如按位与(&):

PHP代码如下:

<?php
echo "wolf"&"cat";

//输出 “cad”
?>


具体运算过程是这样的:
首先最短为三个字符,所以
"wolf"&"cat"我们只需要考虑"wol"&"cat" ,wolf中最后一个f不考虑

然后把各字母转换为ASCII码,再把ASCII码转成二进制表示:
比如首位为w和c:

字母  ASCII  二进制值
w       119    1110111
c        99      1100011

现在我们把两个二进制值进行按位与操作,位上都为1则等于1,否则为0
1110111
1100011
-------------
1100011

所以得到结果为 1100011,即字母c

所以首个字母w&c的结果为c

同样道理,可以计算o&a和l&t,得到a和d,最后把c,a,d连接起来,即得到最终结果“cad”。





互助共享,共同成长。
顶部
kuco
新手上路
Rank: 1



UID 192
精华 0
积分 0
帖子 8
翻译 0
原创 0
阅读权限 10
注册 2007-7-17
状态 离线
发表于 2007-8-16 21:32  资料  短消息  加为好友 
道理明白..但似乎应用的地方很少..

顶部
mayongzhan
PHPEye Developer
Rank: 8Rank: 8


UID 136
精华 2
积分 20
帖子 41
翻译 18
原创 1
阅读权限 1
注册 2007-6-30
状态 离线
发表于 2007-8-28 17:20  资料  短消息  加为好友 
位运算只在考试的时候用到过,
不过位运算比普通的运算效率高很多.

比如 $a=3
要执行$a*2,
这样: $a<<1
位移一位就相当于乘二





顶部
nawsber
新手上路
Rank: 1



UID 315
精华 0
积分 0
帖子 3
翻译 0
原创 0
阅读权限 10
注册 2007-8-29
状态 离线
发表于 2007-8-29 13:15  资料  短消息  加为好友 
从来没用过,这种字符的位运算用在什么地方?
wol&cat得到cad

顶部
 


PHPEye开源社区


当前时区 GMT+8, 现在时间是 2008-12-5 09:18

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.025730 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - PHPEye开源社区 - Archiver