[PHP][位转换积累]之与运算截取二进制流的值
2016-06-07 11:43
549 查看
function getBit( $num, $bit, $mask ){ return $num>>$bit&$mask; } var_dump( getBit( 41, 3, 7 ) ); var_dump( getBit( 0x29, 0x0, 0xf ) ); //十六进制表示法同样适用
此函数适合大端序的二进制流
取十进制数$num的第$bit位起至$mask位,返回值是十进制数
原理,把$num左移动至$bit位,然后跟$mask相与,得到的就是掩码掩住的几位二进制数,例如(也就是0000 1010),取9的第2至第4位(101,也就是十进制数5),先右移动1位,然后跟7(也就是0000 0111)相与,然后得到5(101)这个数,因为相与的位,只有双方都为1的时候才等于1,只有一方为0都等于0,所以掩码必须为左起连贯的1的二进制数, 例如0000 1111,0000 0111
相关文章推荐
- FTP主动模式和被动模式的区别
- PHP二维数组合并的两种不同方式
- FTP匿名登入
- session的了解及使用
- php版本的选择
- PHP 反射应用之一(插件框架)
- tftp服务器搭建
- Thinkphp中模板js变量传参给PHP,并获得返回值
- PHP-自己写的代码练习-数组
- php笔记7-数组
- SAS OUTPUT语句
- 花生棒配合树莓派使用SFTP远程传输文件
- tftp server搭建及客户端配置及烧录boot
- thinkphp几个表的数据合并,并用数组分页
- thinkphp 常量的定义
- windows下php连接sqlserver2008
- php 中文分词使用
- php常见问题收集
- Zend Studio使用教程之升级Zend Studio(1/3)
- php逻辑运算符 && 和&区别