zoukankan      html  css  js  c++  java
  • 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 ?>
     
  • 相关阅读:
    linux read的用法[转]
    1>/dev/null 2>&1的含义
    文件的权限
    【原创】server 10.192.242.184 not responding, still trying
    git使用中遇到的错误及解决方法
    linux中mmu作用的简单总结(未完)
    python版本设置
    【转】buntu TELNET服务安装配置
    【转】进程上下文和中断上下文、原子上下文的区别
    【转】【Linux】理解bitops中的__set_bit及其应用
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9292071.html
Copyright © 2011-2022 走看看