位运算练习:求多数的大数、二进制数中1的个数

代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
  
<title> new document </title>
  
<meta name="generator" content="editplus" />
  
<meta name="author" content="" />
  
<meta name="keywords" content="" />
  
<meta name="description" content="" />
 
</head>

 
<body>
   
<script type="text/javascript" language="javascript">
     
/*
       求多个数中的最大者
     
*/
     
function getMaxNum()
     {
        
if(arguments.length<=1)
        {
          
return arguments[0];
        }
        
var arg=arguments;
        
var max=arg[0];
        
var i=1;
        
while(i<arg.length)
        {
          
//一个数由32位表示,最高位是符号为(0正1负),因此,两数相减,结果右移31位,保留的就是符号位。
          //再由符号位与1相与,0正1负
          max=(((max-arg[i])>>31)&1)==0?max:arg[i];         
          
++i;
        }
        
return max;
     }
     
function get1Num(num)
     {
        
var count=0;
        
while(num>0)
        {
          
//一个数的二进制表示中1的个数算法为:此数减1,再与自身相与,以此循环,直至该数小于等于0为止。循环的次数即为1的个数
          num=(num-1)&num;
          count
++;
        }
        
return count;
     }
     
     document.write(
"10,-2,15,17.23,13,12中的大数是:"+getMaxNum(10,-2,15,17.23,13,12));
     document.write(
"<br />7的二进制表示中,1的个数为:"+get1Num(7));
   
</script>
 
</body>
</html>
原文地址:https://www.cnblogs.com/McJeremy/p/1688613.html