首页 > 其他分享 >位运算

位运算

时间:2023-07-07 21:23:36浏览次数:35  
标签:cout 个位 二进制 lowbit int 运算

位运算中常用操作
因为计算机中所有数实际上都是以二进制的形式存储的,所以进行位运算在有些时候能提高运算效率

n的二进制表示中第k位是几

n = 15 = (1111)2
其中个位是第0位是从个位算起

整个操作过程分两步
第一步:
先把n的第k位移到最后一位

n >> k

第二步:
看一下个位是多少

(n >> k) & 1

lowbit(x)

返回x最低位1

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

lowbit配合hash可以求出一数的二进制表示中所有的1的位数

const int N = (1 << 20) + 10;\
//H[2 ^ k] = k;
int H[N];
for(int i = 0; i <= 20; ++ i)	H[1 << i] = i;
while(cin >> n)
{
	while(n > 0)
	{
		cout << H[n & (- n)] << ' ';
		n -= n & (-n);
	}
	cout << endl;
}

标签:cout,个位,二进制,lowbit,int,运算
From: https://www.cnblogs.com/cxy8/p/17536084.html

相关文章

  • C++ 中的运算符重载
     您可以重定义或重载大部分C++内置的运算符。这样,您就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数,函数名是由关键字operator和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。https://www.micsoon.com/bkzn19/......
  • 计算机组成原理-运算器实验(1)
    实验2运算器实验(1)学号:    姓名:一、 实验目的1.掌握开源数字电路模拟软件Logisim的使用;2.掌握有符号数加减运算溢出检测的基本方法;3.掌握运算器的组成及其工作原理;4.验证4位函数发生器74181的组合功能。 二、实验设备EL-JY-II型计算机组成原理实验系统一套,排线若......
  • 2.5整数和小数和运算
    整数举例:1,2,234,-123,0类型:int浮点型(小数):举例:1.3,2.14,-2.34类型:float可用加+减-乘*除/运算可以用括号改变优先级 ......
  • C++ 重载运算符和重载函数
     C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数......
  • 面试题 16.07. 最大数值 ——一种基于乘法和位运算的解题思路
    剧透警告,没写过的勿触题目:编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。qwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqq......
  • C语言运算符 类型与示例
    C语言的运算符是C语言中的重要功能之一,它们使用符号来执行各种数学、关系、按位、条件或逻辑操作。C编程语言提供了多种内置运算符,以满足程序的不同需求。通常,运算符在操作数据和变量的程序中起着关键作用,并作为数学、条件或逻辑表达式的组成部分。 算术运算符示例算术运......
  • Java--大数运算时的溢出问题
    Java--大数运算时的溢出问题一、前言​JDK7新特性,数字之间可以用下划线进行分割,便于阅读。二、代码示例publicclassDemo01{publicstaticvoidmain(String[]args){intmoney=10_0000_0000;intyears=20;inttotal1=money......
  • C语言运算符优先级
    在C语言中,运算符优先级是一个比较麻烦的概念,如果搞不清楚优先级可能会产生一些难以察觉的错误第一优先级:[]().->第一优先级包括方括号,圆括号,对象,对象指针第二优先级:-~++–*&!(类型)sizeof第二优先级包括取负,按位取反,自增,自减,取值运算符,取地址符,逻辑非运算符,强制......
  • Shell | 数值运算
    Shell和其它编程语言不同,Shell不能直接进行算数运算,必须使用数学计算命令Shell中常用的数学计算命令如下所示:$((expression))操作符:可以进行基本的整数运算。let:对整数进行数学运算,类似于$((expression))操作符。expr:可以进行基本的整数运算,如加减乘除、取模等......
  • C语言笔记:第5章 运算符,表达式和语句
    基本运算符算术运算符+加法运算符-减法运算符,或负值运算符*乘法运算符/除法运算符%模运算符,或称取余运算符,要求%两侧均为整型关系运算符<小于运算符<=小于等于运算符>大于运算符>=大于等于运算符==等于运算符!=不等于运算符关系运算的结果成立就为"......