面试题15:位运算

作者: 不会编程的程序猿甲 | 来源:发表于2020-02-11 23:38 被阅读0次

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

思路:
把一个数减去1再和原来的数相与,会把该整数最右边的1变成0,那么这个整数可以进行这样的操作多少次就说明该整数的二进制表示中有多少个1。

但要注意,负数需要用补码表示,负数的补码在python中求解需要将原数与0xffff ffff相与得出(暂时没懂为啥嘤嘤嘤)。
代码:

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        #solution 1 最佳解法:将n-1与n相与,n中有多少个1可以做多少次这种与操作
        count = 0
        if n<0:
            n = n & 0xffffffff
        while n:
            count +=1
            n = n & (n-1)
        return count

运行结果:


提交结果.png

python 特有一句话解答:

return bin(n&0xffffffff).count('1')

bin函数:返回整数的二进制形式,类型为字符串
count :计算某个字符出现的次数

相关文章

  • 面试题15:位运算

    题目1:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:把一个数减去1再和原来的数相与,会...

  • 15.位运算

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

  • 不用加减乘除符号实现四则运算(整数)--JAVA

    这种面试题...能想到的就是用位运算代替 在讲解之前,首先普及一点知识与运算(全一才是一):0 & 0 = 01 ...

  • IMEI格式

    IMEI 码由15位数字组成,其中第15位(IME15)是检验位,是通过将前14(IMEI14)运算得出的, 计算...

  • 常见位运算的面试题

    1. 不用临时变量,交换两个整数? 一个数和另一个数异或两次得到的还是原来的数 例如: 2. 统计一个整数二进制中...

  • C语言 第13节 位运算符

    位运算符 按位与分析 5 & 7 = 521 & 7 = 55 & 1 = 15 & 10 = 0-5 & 10 ...

  • 【算法面试题】重复的DNA序列

    【算法面试题】重复的DNA序列 今天是一道关于位运算的题目,来自leetcode,难度为Medium,Accept...

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

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

  • 位运算及其应用

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

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

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

网友评论

    本文标题:面试题15:位运算

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