我在用js做二进制问运算  结果有点奇特  功力尚浅求大侠 知道 具体代码如下var flag = (a&b)===b?true:false;a = 110(6) b=100(4) 就是在3字段一下时候结果都正确
当上到4的时候就不正确了
例如
a= 1110(14) b=1000(8) alert是72...
不明所以

解决方案 »

  1.   

    自己帮自己顶一下  求help
      

  2.   


    window.onload=function(){
    var userId="";
    $.post("queryJosnUser.do",{userId: userId},
    function(resp){
    var user = eval(eval(resp));
    for (var i = 0; i < user.length; i++){
    var a = parseInt((user[i].permissions).toString(2));
    JudgeLevel(a);
    }

    });
    var lev1 = document.getElementById("Lev1");
    lev1.style.display = 'none';
    var lev2 = document.getElementById("Lev2");
    lev2.style.display = 'none';
    var lev3 = document.getElementById("Lev3");
    lev3.style.display = 'none';}
    //权限判断 
    function judegeLevelValue(txt1,txt2){
    var b = parseInt((txt2).toString(2));
    var flag = (txt1&b)===b?true:false;
    return flag;

    }
    //根据权限显示操作 
    function JudgeLevel(txt){
    if(true === Level1(txt)){
    var le1 = document.getElementById("Lev1");
    le1.style.display = 'block';
    }
    if(true === Level2(txt)){
    var le2 = document.getElementById("Lev2");
    le2.style.display = 'block';
    }
    if(true === Level3(txt)){
    var le3 = document.getElementById("Lev3");
    le3.style.display = 'block';
    }
    if(true === Level4(txt)){
    }
    if(true === Level5(txt)){
    }
    }
    //权限级别1,数字2^1
    function Level1(txt){
    var flgLevel = judegeLevelValue(txt,2);
    if(true === flgLevel){
    return true;
    }
    return false;
    }
    //权限级别2
    function Level2(txt){
    var flgLevel = judegeLevelValue(txt,4);
    if(true === flgLevel){
    return true;
    }
    return false;
    }
    //权限级别3
    function Level3(txt){
    var flgLevel = judegeLevelValue(txt,8);
    if(true === flgLevel){
    return true;
    }
    return false;
    }
    //权限级别4
    function Level4(txt){
    var flgLevel = judegeLevelValue(txt,16);
    if(true === flgLevel){
    return true;
    }
    return false;
    }
    //权限级别5
    function Level5(txt){
    var flgLevel = judegeLevelValue(txt,32);
    if(true === flgLevel){
    return true;
    }
    return false;
    }
      

  3.   

    //没出现你说的这事情啊。。
    var a = 14;
    var b = 8;
    alert(a&b); //8
      

  4.   

    查了下手册parseInt(numString, [radix])参数
    numString必选项。要转换为数字的字符串。radix可选项。在 2 和 36 之间的表示 numString 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。
      

  5.   

    var txt2 = 8;
    var b = parseInt((txt2).toString(2)); //这样处理有问题!此时b的值变成了1000
      

  6.   

    下面2个转化的结果是不一样的,看看是不是这里的原因var a = parseInt("1000".toString(2));
    var b = parseInt("1000".toString(2),2);
    alert(a+"|"+b);
      

  7.   

    这个处理 就是要转化成 2进制 
    2进制在js理用的number还是string ?
      

  8.   

    您对位运算的理解可能有点问题,看看W3SCHOOL上的教程吧:
    http://www.w3school.com.cn/js/pro_js_operators_bitwise.asp