• php实现 查找输入整数二进制中1的个数


    php实现 查找输入整数二进制中1的个数

    一、总结

    一句话总结:

    1、if($j&intval($num)){}的作用是什么

     1 <?php
     2 while($num=trim(fgets(STDIN))){
     3     $n=0;
     4     for($i=0;$i<32;$i++){
     5         $j=1<<$i;
     6         //echo $j.PHP_EOL;
     7         if($j&intval($num)){
     8             $n++;
     9         }
    10     }
    11     echo $n.PHP_EOL;
    12 }
    13 ?>
    $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。

    2、如何将一个数左移?

    a、数的位置,

    b、符号

     5         $j=1<<$i;

    二、查找输入整数二进制中1的个数

    题目描述

    请实现如下接口

         public   static   int  findNumberOf1( intnum)

        {

             /*  请实现  */

             return  0;

        } 譬如:输入5 ,5的二进制为101,输出2

    涉及知识点:

    输入描述:

    输入一个整数

    输出描述:

    计算整数二进制中1的个数

    示例1

    输入

    复制
    5
    

    输出

    复制
    2
     
    例子名称结果
    $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
    $a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
    $a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
    ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
    $a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
    $a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

    代码

     1 <?php
     2 while($num=trim(fgets(STDIN))){
     3     $n=0;
     4     for($i=0;$i<32;$i++){
     5         $j=1<<$i;
     6         //echo $j.PHP_EOL;
     7         if($j&intval($num)){
     8             $n++;
     9         }
    10     }
    11     echo $n.PHP_EOL;
    12 }
    13 ?>
     
  • 相关阅读:
    Codeforces 166E. Tetrahedron
    Codeforce 687A. NP-Hard Problem
    Codeforces 570C. Replacement
    Codeforces 554B. Ohana Cleans Up
    Codeforces 482A. Diverse Permutation
    Codeforces 431C. k-Tree
    Codeforces 750B. Spider Man
    Codeforces 463A. Caisa and Sugar
    Codeforces 701B. Cells Not Under Attack
    Codeforces 445A. DZY Loves Chessboard
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9292071.html
Copyright © 2020-2023  润新知