美文网首页
15.位运算

15.位运算

作者: 带带吴腾跃 | 来源:发表于2019-12-24 20:45 被阅读0次

题目:输入一个32位整数,输出该数二进制表示中1的个数。
注意:负数在计算机中用其绝对值的补码来表示。

求补码的方法:

  • 例如求-8的补码
  • 1.先求出-8的绝对值:8
  • 2.写出8的二进制表示:1000
  • 3.从右往左,碰到第一个1之后,剩下的位全部取反,32位操作系统中-8的表示就是:1111 1111 1111 1111 1111 1111 1111 1000

位运算:

  • 1111 & 1 = 1 拿1111的最后一位与1做与运算 所以结果为

其他补充:

  • C++中如果一个有符号的整数做位运算,例如向右移动1位,那么它会在最高位上补1。如果一个无符号整数做位运算,那么它会在最高位上补0。
  • 例如 (有符号整数)
    0000 0000 0000 0000 0000 0000 0000 0001 >> 1 =
    1000 0000 0000 0000 0000 0000 0000 0000
  • (无符号整数)
    1000 0000 0000 0000 0000 0000 0000 0001 >> 1 =
    0100 0000 0000 0000 0000 0000 0000 0000

根据以上信息,本题思路,先把有符号整数转换成无符号整数,不然会产生死循环,然后与1做&运算,统计个数。

class Solution {
public:
    int NumberOf1(int n) {
        unsigned int _n = n;
        int count = 0;
        while (_n)
        {
            if (_n & 1 == 1) count += 1;
            _n >>= 1;
        }
        return count;
    }
};

相关文章

  • 15.位运算

    题目:输入一个32位整数,输出该数二进制表示中1的个数。注意:负数在计算机中用其绝对值的补码来表示。 求补码的方法...

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 位运算

    位运算 1. &:按位与 规律:一假则假任何位上的数和1相&得到的结果还是那个数 2. |:按位或 规律:一真则真...

  • 位运算

    https://leetcode.com/problems/gray-code/description/这个位运算...

  • 位运算

    位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能。如果要开发高效率程序,位运算符是必不...

  • 位运算

    1.不用加减乘除做加法 解法:分为三步①各位相加不进位,即先按位异或;②做进位,按位与并左移位;③结果相加,直至没...

网友评论

      本文标题:15.位运算

      本文链接:https://www.haomeiwen.com/subject/yqofoctx.html