zoukankan      html  css  js  c++  java
  • 剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)

    1. 题目描述

      输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

    2. 思路和方法

      使用移位(<<)和 “| & !”操作来实现。1的二进制是:前面都是0,最后一位为1。每次向左移位一下,使得flag的二进制表示中始终只有一个位为1,每次与n做位与操作,这样就相当于逐个检测n的每一位是否是1。unsigned int flag = 1;  例如:5&1 = 101 & 001,1前面补0

    3. C++核心代码

    3.1 位运算

     1 class Solution {
     2 public:
     3      int  NumberOf1(int n) {
     4          int result = 0;
     5          unsigned int flag = 1;
     6          while(flag)
     7          {
     8              if(n&flag)
     9                  result++;
    10              flag = flag<<1;
    11          }
    12          return result;
    13      }
    14 };
    View Code

    参考资料

    https://blog.csdn.net/qq_28632639/article/details/87966115

  • 相关阅读:
    Redis Redis-Cell
    Redis Bloom Filter
    Redis HyperLogLog
    TCC、XA 、DTP区别
    MySQL索引最左匹配原则
    什么原因导致统计信息失效--SQL
    光标移动大法---落落大神
    mongo 导入导出
    oracle 10053 事件
    卸载12C
  • 原文地址:https://www.cnblogs.com/wxwhnu/p/11407508.html
Copyright © 2011-2022 走看看