博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【位运算总结】 之 左移运算
阅读量:4177 次
发布时间:2019-05-26

本文共 552 字,大约阅读时间需要 1 分钟。


左移运算的概念:

应用:

1、优化代码

       因为左移运算比乘法快,因此x = x*2可优化为x = x << 1。

2、计算一个数的二进制的某位

       如题:给定一个含不同整数的集合,返回其所有的子集。

       解题思路:

       假设该数组为a[n],有n个元素。对每个元素标记为1或0表示某子集内有或没有该元素,如此排列下来,000…00,000…01,000…10, …… ,至111…1,共有2^n-1中排列方式。若将区间[0,2^n-1]中的每个整数表示为一个子集,遍历每个集合可表示为

for (int i = 0; i < (1<

       如何可以从这个整数中得到子集中的元素呢?

       这就用到了左移运算,如 1 << 0 = 1,1 << 2 = 10,1 << 3 = 100…… 那么,我们将每个整数相与& (1 << j),就可以得到该整数的二进制表示中,第 j 位是0还是1!

       所以,本题完整的代码可以表示为:

       (第一行是空行,因为数字0表示没有任何一个数在集合中,即空集)

#include 
using namespace std;int main(){ int arr[5] = {1, 2, 3, 4, 5}; int n = 5; for (int i = 0; i < (1<

 

转载地址:http://tvtai.baihongyu.com/

你可能感兴趣的文章
SQL关键字执行顺序
查看>>
设计模式--适配器模式
查看>>
SpringMvc注解之@ControllerAdvice
查看>>
SQL--查询两个字段相同的记录
查看>>
多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念
查看>>
多研究些架构,少谈些框架(2)-- 微服务和充血模型
查看>>
多研究些架构,少谈些框架(3)-- 微服务和事件驱动
查看>>
SQL性能优化梳理
查看>>
微服务架构技术栈
查看>>
想面试进BAT,不得不看的分布式锁,面试题都在这里了!!
查看>>
Redis最常被问到知识点总结
查看>>
这才是微服务拆分的正确姿势,值得学习!
查看>>
MySQL中一条SQL是如何执行的?
查看>>
MySQL的索引是什么?怎么优化?
查看>>
2万字长文包教包会 JVM 内存结构
查看>>
不懂 spring 就彻底放弃 Java 吧!
查看>>
从MySQL高可用架构看高可用架构设计
查看>>
可以秒杀全场的SpringCloud微服务电商实战项目,文档贼全!
查看>>
java架构之路(多线程)synchronized详解以及锁的膨胀升级过程
查看>>
java架构之路(多线程)AQS之ReetrantLock显示锁的使用和底层源码解读
查看>>