也谈 2进制和 10进制的互换.

  今天偶然看到一个关于2进制10进制互转的代码 【司徒的,呵呵,我 喜欢】,如下  

alert(parseInt("101101", 2))

   这是二进制转10进制的 .

  然后对方给出了两种10进制转2进制的 方式

 

代码
function toBin(intNum) {
var answer = "";
if(/\d+/.test(intNum)) {
while(intNum != 0) {
answer
= Math.abs(intNum%2)+answer;
intNum
= parseInt(intNum/2);
}
if(answer.length == 0)
answer
= "0";
return answer;
}
else {
return 0;
}
}
alert(toBin(
45))

 

 

 

 

代码
function toBin(dec) {
var bits = [];
var dividend = dec;
var remainder = 0;
while (dividend >= 2) {
remainder
= dividend % 2;
bits.push(remainder);
dividend
= (dividend - remainder) / 2;
}
bits.push(dividend);
bits.reverse();
return bits.join("");
}
alert(toBin(
45))

 

 

然后又给出了另一种的解释

 

alert(2..toString(2))//如果一个点会提示错误 ,引擎无法判断是小数点还是"."操作符,也或者说这里产生了一个"shift-shift confilt"

 alert(2.0.toString(2))

 alert((2).toString(2))

其实以上就是 10 转 2进制了 

10进制转 2进制 ,结果成了这样来处理的 
alert(45..toString(2));

 

或者 
alert((45).toString(2))

 

这样利用了js原本的函数来处理,显然要方便和快捷,和高效得多.
然后就 是 toString本身了(其实这和函数调用相关)
 按照js的说明, 每个object都有length的(很奇怪哦)
 如果 1..toString.length 得到了什么?
 // 1.
  因为toString 的 arguments 是 空的呗. 很奇怪的方式 .呵呵.

posted on 2010-05-16 11:25  Hehe123  阅读(289)  评论(0编辑  收藏  举报