c/c++语言开发共享剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)

1. 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 2. 思路和方法 使用移位(<<)和 “| & !”操作来实现。1的二进制是:前面都是0,最后一位为1。每次向左移位一下,使得flag的二进制表示中始终 …


1. 题目描述

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

2. 思路和方法

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

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 };

 

参考资料

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

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602179.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐