前两天上陆幼利的《windows程序设计》的时候看到了很多这样的函数:
C++代码
- CreateWindow(args...,WS_VISIBLE | WS_CHILD | BN_PUSHBUTTON);
- MessageBox(args...,MB_OK | MS_QUESTION);
可以看到,函数的某个参数可以接受形如c1 | c2 | c3的参数形式,从而达到并列这些条件的效果,就是说在有很多样式可以组合的前提下,你可以在不违反规则的情况下任意的组合几个条件,来并列显示他们的效果
觉得这种函数很神奇,上节课下课后专门去问了陆幼利,他说是由位运算完成的,而这些条件都是之前就已经define过的2的n次幂,做位或运算时相互不干扰
听后有了一点大概的感觉,今天刚好找到一个PHP代码,很好的解释了这一技巧,该程序将要通过位运算实现权限的组合
PHP代码
- <?php
- define("PUBLIC_ARTICLE", 1); //发行文章
- define("CREATE_ARTICLE", 2); //添加文章
- define("MODIFY_ARTICLE", 4); //修改文章
- define("DELETE_ARTICLE", 8); //删除文章
- define("SHARCH_ARTICLE", 16); //搜索文章
- define("CREATE_COMMENT", 32); //添加文章评论
- define("DELETE_COMMENT", 64); //删除文章评论
- //所有的权限
- $final_allow = PUBLIC_ARTICLE | CREATE_ARTICLE | MODIFY_ARTICLE
- | DELETE_ARTICLE | SHARCH_ARTICLE | CREATE_COMMENT | DELETE_COMMENT;
- echo "管理者拥有的全部权限:" .decbin($final_allow). "<br>";
- $no_shearch_allow = $final_allow ^ SHARCH_ARTICLE;
- echo "仅无法搜索文章的权限:" .decbin($no_shearch_allow). "<br>";
- //编辑人员独有的权限
- $editor_allow = PUBLIC_ARTICLE | MODIFY_ARTICLE | DELETE_ARTICLE;
- $no_editor_allow = $final_allow & ~$editor_allow;
- echo "非编辑人员所有的权限:" .decbin($no_editor_allow). "<br>";
- ?>
最终输出为:
管理者拥有的全部权限:1111111
仅无法搜索文章的权限:1101111
非编辑人员所有的权限:1110010


15款在线web2.0图片生成器
Large
Middle
Small
views(972)
view comments(4)
add comment


Comments: