zoukankan      html  css  js  c++  java
  • 二进制中1的个数(十一)

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

    function NumberOf1(n){
        
        //当输入的为一个负数时
        //-123的二进制表示为-1111011 123的二进制表示为1111011  123的后面部分的补码0000101=122的正码 1111011按位取反
        //所以一个负数的二进制为 它的正数的二进制的负数  这个正数后面的补码 就等于 (这个正数-1)的正码按位取反 
        if(n<0){
            n=-n;//将负数变为正数
            n=n-1;//再将这个正数-1 因为这个正数减一取反 即为这个正数的补码 然后将这个正数的补码全部按位取反即得-123的补码表示
                  //因为一个负数的二进制是它的正数的二进制取反 
            //所以可以将这个负数变为正数 然后再-1  得到的二进制,就是正数的补码  然后将这个正数的补码全部按位取反即得-123的补码表示
            var str=(Array(32).join('0')+n.toString(2)).slice(-32);
            str=exchange(str);
        }else{
            var str=(Array(32).join('0')+n.toString(2)).slice(-32);
        }
    
        return cal(str);
    
    }
    
    /**
     * 计算1的个数
     */
    function cal(str){
        var count=0;
        for(var i=0;i<str.length;i++){
            if(str[i]==1){
                count++;
            }
        }
        return count;
    }
    
    //如果是负数,0变1,1变0
    function exchange(str){
        var arr=str.split('');
        for(var i=0;i<arr.length;i++){
            if(arr[i]==0){
                arr[i]=1;
            }else{
                arr[i]=0;
            }
        }
        str=arr.join('');
        return str;
    }
  • 相关阅读:
    selenium-java,定位并操作frame和iframe内的元素
    多线程-java
    Mysql基础
    webpack文件处理
    webpack调试必备配置之SourceMap介绍
    webpack提取分离css单独打包
    webpack编译less和sass
    webpack中loader在处理HTML中引入图片
    webpack用loader加载css
    使用配置文件webpack.config.js打包文件
  • 原文地址:https://www.cnblogs.com/cmy1996/p/9601832.html
Copyright © 2011-2022 走看看