javascript 图表映射 二进制和十进制的互转

function intoBin(num){
 var arr = [1,2,4,8,16,32,64,128];
 var num_arr = num.split('').reverse();//分割字符串
  return num_arr.reduce(function(v,t,i){return v + t*arr[i];},0);//从右向左精简求和
}
console.log(intoBin('1010'));//10

 

function intoBin(num){
 var arr =1,2,4,8,16,32,64,128],i=0;
 var num_arr = num.split('');
return num_arr.reduceRight(function(v,t){return v + t*arr[i++];},0);
}
//reduceRight 的函数的第三个参数是从大到小减法,和reduce不一样。
         var bintoInt = function(number) {
                var arr = [128, 64, 32, 16, 8, 4, 2, 1];//8位数字
                arr.forEach(function(n, i, a) {
                    if (number >= n) {
                        number -= n;//进行递减判断
                        a[i] = 1;
                    } else {
                        a[i] = 0;//转码
                    }
                });
                return arr;
            }
console.log(bintoInt(134));//[1, 0, 0, 0, 0, 1, 1, 0]

 

 

  

当你的需要是字符串或者数组的时候可以考虑,时间复杂度自己算吧,我也不会。

posted @ 2015-05-14 23:16  哲小九  阅读(304)  评论(0编辑  收藏  举报