首页 > 其他分享 >lowbit函数

lowbit函数

时间:2023-08-27 23:44:42浏览次数:30  
标签:反码 函数 int lowbit 补码 二进制 原码

lowbit(n)取出n在二进制表示下最低位的1的位置

int lowbit(int x) {
	return (x & -x);
}

原理就是将x的原码与上x的补码(-x:补码, ~x:反码, 补码等于反码加一)

eg:
6的原码:0110
6的补码:1010
&运算: 0010
实际上就是最低位1的位置,但转化为十进制就是最低位的1以及它后面的0构成的数值

通过这方法可以求二进制中1的个数:

26. 二进制中1的个数 - AcWing题库

#include <iostream>
using namespace std;

int lowbit(int x) {
	return (x & -x);
}
int main() {
    int n, res = 0;
    cin >> n;
    while (n) n -= lowbit(n), res++;
    cout << res;
    return 0;
}

标签:反码,函数,int,lowbit,补码,二进制,原码
From: https://www.cnblogs.com/-37-/p/17661141.html

相关文章

  • 有了析构函数之后,为什么还要虚析构和纯析析构?
    我们知道析构函数释放父类的资源的,但如果子类中有属性开辟到堆区,那么父类是无法调用到子类的析构代码的,子类的占用的堆区内存如果没有得到释放,那么会造成内存泄漏。那么要让父类的指针能够调用子类的析构函数,释放子类的堆区内存,就要用到虚析构或者纯虚析构。虚析构......
  • 构造函数
    一、inline(内联)函数 什么情况下产生inline:函数在class的本体里面定义,就形成一种inline。在外头定义就不是inline。但是,是不是最后真的变成inlinefunction由编译器决定。inline有什么好处:快。有特点而没有缺点。尽量都写成inline那最好。2-2不在本体内定义,可以在......
  • Excel中如何用条件格式和COUNTIF函数判断15位以上的数字
    Excel中如果用条件格式和COUNTIF函数判断15位以上(不包含15位的数字)的数字会出现错误,对于这种问题,要采用其他的方式进行判断。出现的错误,如下图所示:  1.条件格式判断15位以上的数字:1.1选择A列(如果此时只选择A1单元格,后面要在条件格式管理器中选择应用范围);1.2条件格式-新建......
  • C++—函数
    6函数6.1概述作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。6.2函数的定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return表达式语法:返回值类型函数名(参数列......
  • S调用函数时什么时候加小括号()?什么时候不加小括号()?
    JS调用函数时什么时候加小括号()?什么时候不加小括号()? 2019.03.1809:11:32字数83阅读1,937加括号后代表立即执行这个方法,不加括号代表这个方法不是立即执行,需要等待某个时机,如下:     不带括号的调用function,函数体对象为参数带括号的调用function(),立即执......
  • 剑指Offer 30. 包含min函数的栈
    题目链接:剑指Offer30.包含min函数的栈题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min、push及pop的时间复杂度都是O(1)。解法思路:首先理解题意:题目是要实现一个可以在O(1)的时间复杂度内得到栈中最小值得栈,如果是常......
  • C++空类中有哪些成员函数?
    一共有6个成员函数。1.构造函数2.拷贝构造函数3.析构函数4.赋值运算符5.取址运算符6.取值运算符const1#include<iostream>2usingnamespacestd;34classEmpty5{6Empty();//构造函数7Empty(Empty&);//拷贝构造函数8~Empty();......
  • 函数式接口和方法引用
    函数式接口和方法引用1.函数式接口概述只有一个抽象方法(default不算)的接口称为函数式接口.通常有注解:@FunctionalInterface进行标识.2.方法引用只有在lambda表达式总发现方法体只有一行代码就可以简化写法;例如:lambda的三层简化写法newArrayList<String>().st......
  • 【题解】 P7077 [CSP-S2020] 函数调用(拓扑排序)
    题意题目给定了一个长度为\(n\)序列\(a\)与\(m\)个操作,操作一共有3种:1.给定\(x,y\),使\(a_x\)增加\(y\)。2.给定\(x\),使\(a\)中所有数全部乘上\(x\)。3.给出k个数\(c_1,c_2,...,c_k\),表示这个操作的任务是按照先后顺序执行编号为\(c_1,c_2,...,c_k\)的\(k\)的操作。最后,题目相......
  • 过滤函数
    要过滤对象数组中某个属性值相等的对象,可以使用过滤函数结合对象属性的比较来实现//假设有一个包含学生信息的数组varstudents=[{name:"张三",score:85},{name:"李四",score:90},{name:"王五",score:78},{name:"赵六",score:95},{name......