zoukankan      html  css  js  c++  java
  • 蓝桥学院2019算法题1.4

      共有三种解法:

        1、将1左移i位后与N进行&,只有都为1时,结果才为1。

        2、n无符号右移与1&,结果为1说明当前位为1。

        3、(x-1)&x 可以消掉最低位上的1.消掉几次,1的个数就为几。

      补充知识:

      << ,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。9 << 1 = 18; 9二进制为1001,左移1位,10010,十进制为18。Java负数存储是以补码形式存储的(补码=反码+1),-9的二进制为11111111111111111111111111110111。

      >>,有符号右移位,将运算数的二进制整体右移指定位数,整数高位用0补齐,负数高位用1补齐(保持负数符号不变)。9 >> 1 = 4,-9 >> 1 = -5。

      >>>,无符号右移位,不管正数还是负数,高位都用0补齐(忽略符号位)。9 >>> 1 = 4,-9 >>> 1 = 2147483643。

      

     1 package bitOperation;
     2 
     3 import java.util.Scanner;
     4 
     5 /**
     6  * @author zsh
     7  * @company wlgzs
     8  * @create 2019-02-14 14:52
     9  * @Describe 题3:二进制中1的个数
    10  * 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
    11  * 例9的二进制表示为1001,有2位是1。
    12  */
    13 public class Main3 {
    14     public static void main(String[] args) {
    15         Scanner scanner = new Scanner(System.in);
    16         int n = scanner.nextInt();
    17         //输出该数的二进制数
    18         System.out.println(Integer.toBinaryString(n));
    19         //计数
    20         int count = 0;
    21         for (int i = 0; i < 32; i++) {
    22             //将1左移i位后与N进行&,只有都为1时,结果才为1。
    23             if ((n & (1 << i)) == (1 << i)){
    24                 count++;
    25             }
    26         }
    27         System.out.println(count);
    28         System.out.println("----------方法二------------");
    29         count = 0;
    30         for (int i = 0; i < 32; i++) {
    31             //n无符号右移与1&,结果为1说明当前位为1
    32             if (((n >>> i) & 1) == 1){
    33                 count++;
    34             }
    35         }
    36         System.out.println(count);
    37         System.out.println("----------方法三------------");
    38         count=0;
    39         while (n != 0){
    40             //(x-1)&x 可以消掉最低位上的1.消掉几次,1的个数就为几。
    41             n = (n-1) & n;
    42             count++;
    43         }
    44         System.out.println(count);
    45     }
    46 }

      

  • 相关阅读:
    jQuery插件之jquery editable plugin点击编辑文字插件
    firefox与ie的javascript兼容性编程汇编【转载】
    css前端制作 经验总结
    非常棒的jqChart图表插件
    WPF Image Source设置文件路径后 在编辑状态下显示图片,运行时不显示
    WPF RadioButton 绑定枚举
    WPF MVVM实现数据增删改查逻辑全流程详细解析demo
    bigNumber.js的简单使用
    PHP程序的“Missing argument 3”的错误提示解决方法
    PHP判断0和空的方法
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/10375034.html
Copyright © 2011-2022 走看看