zoukankan      html  css  js  c++  java
  • 位运算

    * 获取数字 num 二进制形式第 bit 位的值。注意:

    1、bit 从 1 开始
    2、返回 0 或 1
    3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1

    input: 128, 8

    output: 1

    function valueAtBit(num, bit) {
        // 1000 0000
        return num & 1<<(bit-1) ? 1 : 0;
    }
    

      

    * 给定二进制字符串,将其换算成对应的十进制数字

    input: '11000000'

    output: 192

    function base10(str) {
        var a = str.split('').map(function(c) {
            return c==='1'?1:c==='0'?0:NaN;
        });
    
        function _base10(a, n) {
            if (n===1) {
                return a[0];
            }
            // priority: +  >  <<
            return (_base10(a,n-1)<<1) + a[n-1];
        }
        return _base10(a, a.length);
    }
    

      

    * 将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。

    input: 65

    output: 01000001

    function convertToBinary(num) {
        var a = [0,0,0,0,0,0,0,0];
        
        function _convert(num, a, n) {
            if (n===1) {
                a[0] = num;
                return;
            }
            a[n-1] = num % 2;
            _convert(num>>1, a, n-1);
        }
        _convert(num, a, a.length);
        
        return a.map(function(i) {
            return i===0 ? '0' : i===1 ? '1':NaN;
        }).join('');
    }
    

      

      

  • 相关阅读:
    创建工作窗口
    windows下关闭进程树
    VC socket api使用引入
    实现PC延迟执行函数
    CxImage实现9PNG
    bzoj 3211 花神游历各国
    codevs 3287 货车运输 NOIP2013提高组
    bzoj 3732 Network
    codevs 2370 小机房的树
    图论-最近公共祖先-在线树上倍增
  • 原文地址:https://www.cnblogs.com/mingzhanghui/p/9248784.html
Copyright © 2011-2022 走看看