zoukankan      html  css  js  c++  java
  • [导入]有关位运算的一个实例

    开发中有同事写了这样一段代码:          
                    int profilePermission = daAccount.GetUserProfilePermission(info.Liveid);
                    int permissionMask = 0xffff ^ (XOn.XPROFILE_PERMISSION_SHARE_MUSIC_NOONE | XOn.XPROFILE_PERMISSION_SHARE_MUSIC_FRIENDS);
                    profilePermission = (profilePermission & permissionMask) | XOn.XPROFILE_PERMISSION_SHARE_MUSIC_NOONE;
                    daAccount.SaveUserProfilePermission(info.Liveid, profilePermission);

    个人觉得位操作的部分可以简化,这样容易让人误解。首先要说的是XOn.XPROFILE_PERMISSION_SHARE_MUSIC_NOONE没有起到作用,其实作者的意思只是想从现有权限中踢掉XOn.XPROFILE_PERMISSION_SHARE_MUSIC_FRIENDS的权限,如果是这样的话,只需profilePermission&(~XOn.XPROFILE_PERMISSION_SHARE_MUSIC_FRIENDS)即可。

        原理很简单:我们可以把他的那段代码进行简化,把具体的权限用A和B进行替代,这样就变成

        int profilePemission = (profilePemission & (0xffff^(A|B)) )|A;

    意思变成提出profilePemission中A和B两块权限,然后再加上A的权限,有点多余了吧,A没有任何作用。

       所有只需简单的profilePermission&(~B)即可,理解起来也方便,就是从profilePemission的权限中剔除B权限。


    文章来源:http://ejimgao.blog.163.com/blog/static/42030016200852513938387
  • 相关阅读:
    mac iterm2配置
    Test注解的两个属性(转)
    稳定排序和不稳定排序(转)
    [转]异步机制与异步原理
    Flex学习笔记
    [转]有道云笔记markdown
    H5调试
    react生命周期方法
    ESLint 代码检查规范
    REST API
  • 原文地址:https://www.cnblogs.com/gaomin/p/1294119.html
Copyright © 2011-2022 走看看