【位运算总结】 之 左移运算

2023-05-16


左移运算的概念:左移运算符

应用:

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<<n), ++i)

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

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

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

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

#include <iostream>

using namespace std;

int main()
{
    int arr[5] = {1, 2, 3, 4, 5};

    int n = 5;

    for (int i = 0; i < (1<<n); i++) //从0~2^n-1个状态
    {
        for (int j = 0; j < n; j++) //遍历二进制的每一位
        {
            if (i & (1 << j))//判断二进制第j位是否存在
            {
                cout << arr[j] << ' ';//如果存在输出第j个元素
            }
        }
        cout << endl;
    }

    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【位运算总结】 之 左移运算 的相关文章

  • WSL2 安装 GUI,并使用 XRDP实现连接(内含汉化操作)

    效果图 随着 wsl2 的发布 xff0c wsl 已经从玩具变成了一个实用的开发利器 xff0c 从最新的微软开发者博客对 wsl 的路线发展规划 xff0c 未来 wsl 将会支持 GPU 计算和 GUI xff08 点此了解详情 xf
  • V4L2打开video设备注意(读写权限)

    V4L2编程中在open 34 dev video 34 时应注意 xff1a 摄像头采集到的数据是最开始是存储在内核空间我们申请的缓冲区中的 xff0c 具体设置如下 xff1a req count 61 5 req type 61 V4
  • mysql 分组取最新的一条记录(整条记录)

    mysql取分组后最新的一条记录 下面两种方法 一种是先筛选 出最大和最新的时间 在连表查询 一种是先排序 然后在次分组查询 默认第一条 就是最新的一条数据了 xff08 此条错误 xff0c 分组mysql官方文档说明 是随机选择分组的一
  • 数据结构:回文判断

    7 1 回文判断 回文是指正读反读均相同的字符序列 xff0c 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 编写一个程序 xff0c 使用栈判定给定的字符序列是否为回文 输入格式 输入待判断的字符序列 xff
  • Proxmox VE /Debian /Ubuntu 设置合上笔记本盖子不休眠的方法

    书接上回和上上回 众所周知 xff0c 服务器是没有AB面的 xff08 KVM当然不算了 xff09 xff0c 燃鹅笔记本有 xff0c 不能让屏幕一直打开亮着吧 xff0c 但是默认都是关闭盖子休眠 xff0c 咋办呢 i i xff
  • 实例解说Linux中fdisk分区使用方法

    实例解说Linux中fdisk分区使用方法 一 fdisk 的介绍 xff1b fdisk Partition table manipulator for Linux xff0c 译成中文的意思是磁盘分区表操作工具 xff1b 本人译的不太
  • ROS 新建py项目并添加话题发布

    目录 一 ros下新建py项目 二 调试运行代码 三 新建话题订阅 发布 一 ros下新建py项目 1 建立工作空间 mkdir ros workspace cd ros workspace mkdir src 2 初始化工作空间 cd到r
  • CCF认证期末预测之最佳阈值

    期末预测之最佳阈值 题目描述 具体来说 xff0c 顿顿评估了 m m m 位同学上学期的安全指数 xff0c 其中第 i 1
  • CCF元素选择器

    思路 fat数组保存其直接祖先 include lt bits stdc 43 43 h gt using namespace std const int maxn 61 105 int n m fat maxn dot maxn stri
  • ICU4C 介绍: C/C++ 平台强大的国际化应用开发组件

    ICU4C 介绍 C C 43 43 平台强大的国际化应用开发组件 荣 施李 shilirong 64 gmail com 软件工程师 EMC 简介 xff1a 随着全球经济快速一体化 xff0c 信息的国际化成为了当前热门的话题 xff0
  • Java数据类型的转换:隐式(自动)转换与强制转换

    一 数据类型的分类 Java 中数据类型分为基本数据类型及引用数据类型 Java 数据类型的转换一般分三种 xff0c 分别是 xff1a 简单数据类型之间的转换 xff1b 字符串与其它数据类型的转换 xff1b 其它实用数据类型转换 二
  • java通用方法equals、hashcode的重写注意事项

    最近在读effictive java这本书 xff0c 看到关于java通用方法重写时的某些规则 xff0c 又想起项目中重写bean的equals方法 xff0c 仔细一想确实有很多不正确的地方 xff0c 所幸项目中的那个对象使用频率低
  • 正则表达式基础

    正则表达式其实算是单独的技术 xff0c 在各个语言中细微的区别 xff0c 但本质上是一致的 xff0c 都是用来描述和匹配符合某个规则的语法的字符串呗 当要验证符合某些规则 xff0c 例如邮件地址什么的 xff0c 使用起来就很方便
  • java并发、多线程知识点

    1 线程实现方法 即实现runnable接口或者继承thread类 xff0c 由于java是单继承机制 xff0c 所以一般采用实现runnable接口的方法 public class LiftOff implements Runnabl
  • 光的基础知识

    光子的产生 光子是电磁辐射的基本粒子 xff0c 它是由电场和磁场相互作用而产生的 当电场和磁场发生变化时 xff0c 它们会相互影响并产生能量 xff0c 这个能量以光子的形式释放出来 例如 xff0c 当电流通过导体时 xff0c 电子
  • Ubuntu 11.10 下ARM 用 TFTP Server 下载程序

    Update 2012 12 16 补充1 xff1a 不安转xinetd来搭建 sudo apt get install tftpd hpa tftp hpa 配置文件内容如下 xff1a cat etc default tftpd hp
  • WSL2+VSCODE+OPENCV

    在网上能找到WSL和VSCODE的配置方法 xff0c 能找到VSCODE和opencv的使用方法 xff0c 能找到WSL和opencv的配置方法 xff0c 但很少有wsl 43 vscode 43 opencv xff0c 但描述不清
  • Gradle开发环境配置

    最近公司有个外包项目需要接回来维护 xff0c 需要gradle才能跑起来 xff0c 之前一直用的是maven构建项目 xff0c 便摸索着将项目环境构建完成 xff1a 1 首先确定本地 Java 环境装好 xff0c 然后下载去官网下
  • 绕过nftables/PacketFilter防火墙过滤规则传输ICMP/ICMPv6数据包的漏洞详解(上)

    背景知识介绍 目前的防火墙总共分四类 xff1a 包过滤防火墙 xff1a 包过滤防火墙不检查数据区 xff0c 包过滤防火墙不建立连接状态表 xff0c 前后报文无关 xff0c 应用层控制很弱 应用网关防火墙 xff1a 不检查IP T
  • 使用集群中唯一一个MON恢复集群ceph-mon服务(记一次故障恢复)

    使用集群中唯一一个MON恢复集群ceph mon服务 记一次故障恢复 xff09 概述 当集群因为某些故障导致mon集群损坏 xff0c 或者多个mondb混乱 xff0c 此时ceph mon服务不可用 xff0c 既所有ceph命令会卡

随机推荐

  • virtualbox虚拟机的配置如何优化

    以下是一些可能有用的提示 xff0c 可帮助您优化VirtualBox虚拟机的性能和配置 xff1a 分配足够的内存和处理器资源 xff1a 在配置虚拟机时 xff0c 确保为虚拟机分配足够的内存和处理器资源 xff0c 这将有助于提高虚拟
  • 【单片机】【笔记】定时器初值的计算

    晶振频率 11 0592M 机器频率 11 0592 12 61 921600个 每秒 每个机器周期 xff0c 定时器计数值加1 当数值为0 xff0c 256 xff0c 65536时 xff08 TH TL同时为0时 xff09 xf
  • vue项目打包成apk安装包详细步骤

    第一步 下载HbuilderX DCloud官网 HBuilderX下载地址 第二部 创建5 43 App项目 完事点创建 得到这么个玩意 把没用的都干掉 xff0c 留下manifest json就行了 然后把打包好的vue项目的内容拿来
  • Hyper-v安装及使用详细教程

    安装 前面先用了VMware xff0c 以为比较方便安装时不用自己配置 xff0c 结果还是要自己配置 那今天来试下win10自带的Hyper v 首先打开设置 应用 程序和功能 启用或关闭 Windows 功能 找到 Hyper v 勾
  • windows11 安装安卓子系统,玩转安卓APP

    开启Hyper v 将Hyper v勾上 xff0c 确定 xff0c 重启电脑 安装windows subsystem for Android 百度盘链接 提取码 xff1a gby8 下载完成之后直接打开安装会提示安装失败 因此需要使用
  • Ubuntu使用

    买了个Redmibook 15 Pro 锐龙版 xff0c 比较方便携带 xff0c 打开尝试了一下就把系统重装了 xff0c 据说linux系统更适合开发 xff0c 因此装了ubuntu20 10 安装 之前有写过在虚拟机安装 xff0
  • go语言使用jwt认证

    这几天在学习nodejs xff0c 进一步了解npm xff0c 学习过程中解开了以前的一个疑惑 xff0c 以前不知道token可以携带信息 xff0c 只以为是用来做对比的 xff0c 学到了jwt身份认证 xff0c 知道了如何使用
  • 注册Office教育版账号流程实现oneDrive1TB储存

    正常的个人微软账号使用oneDrive只有5GB的储存空间 xff0c 可以通过注册office教育版账号获取oneDrive有1TB储存空间的账号 临时教育邮箱 如果使用普通邮箱注册只能注册个人免费账号 xff0c 如下图 xff0c 也
  • windows 安装 gcc 编译 fyne 项目

    fyne官网 一 说明 可以看到官网写的 xff0c 如果是第一次使用 xff0c 需要安装 go 语言 xff0c 安装 gcc xff0c 获取 fyne 依赖 xff0c 其中麻烦点的就是 gcc xff0c 如果不安装 gcc xf
  • 解决 Go 语言使用 cmd 命令,在控制台输出的中文内容为乱码

    场景 xff1a 在使用 fyne 做一个小桌面程序的时候 xff0c 用到了 cmd 命令 xff0c 如果遇到了错误就进行判断或使用 label 输出错误 xff0c 结果输出的中文是乱码的 因为终端使用的是 gbk 编码 xff0c
  • Windows 安装 Docker Desktop 到其他盘、迁移虚拟硬盘映像文件、压缩虚拟硬盘映像占用空间

    一 建立软连接 首先先建立软连接 xff0c 将 Docker 默认安装的目录链接到其他盘 xff0c 这个最好使用 windows 自带的终端 xff0c 使用 powershell 有可能会识别不到 mklink 命令 mklink j
  • python中pip安装的包都在哪里?

    1 windows的话 xff0c 在cmd中使用 pip list 查看已安装的包名2 windows的话 xff0c 在cmd中然后用 pip show 包名 xff0c 就可以看到安装到哪了 3 练习 xff1a 将pymysql通过
  • Rust 基础(一)

    Rust 1 65 发布于2022 11 03 一 安装 配置环境变量 RUSTUP HOME Rustup元数据和工具链将被安装到Rustup主目录中 默认 xff1a USERPROFILE rustup CARGO HOME Carg
  • 定制适用于ARM平台的Ubuntu rootfs(根文件系统)

    0 背景 有一个很厉害的师兄针对我们实验室的需求设计了一块控制板 xff0c 以beaglebone为基础 xff0c 由于更改了一些底层的硬件 xff0c 所以重新定制编译的内核 xff0c 并预先烧写到了板子的flash中 现在需要安装
  • Win10使用附件中的远程桌面连接Ubuntu 16.04图形界面(xrdp方法)

    Ubuntu16 04下 以下命令行皆是在终端中运行 xff1a 安装xrdp sudo apt get install xrdp 安装vnc4server sudo apt get install vnc4server 安装xubuntu
  • CMake构建OpenCV项目

    文章目录 前言一 基本概念二 操作步骤1 创建OpenCV程序2 创建CMake文件3 编译项目4 运行项目 总结 前言 CMake是个一个开源的跨平台自动化建构系统 xff0c 用来管理软件建置的程序 xff0c 并不依赖于某特定编译器
  • 5GC基础:架构和网元

    1 主要内容 5GC xff08 SA xff09 架构介绍 5GC主要网元及功能对比 5GC网络架构的主要变化 SBA架构网元的注册 发现与选择CUPS边缘计算MM和SM的分离计算与存储的解耦与非3GPP的互操作能力开放PCC架构的变化
  • visual studio进入时许可证已过期解决方案

    新手小白 xff0c 记录一下 问题 xff1a 解决步骤 xff1a 1 打开visual studio installer gt 点击更多 gt 点击修复 2 等待更新安装 xff08 耗时略微有些长 xff09 3 点击启动 xff0
  • Qt 在windows 和linux 下的编译教程

    Qt 源码下载地址 xff1a https download qt io archive qt 打开上面的网址 xff0c 进入 submodules 目录下载 qtbase everywhere src 6 4 2 zip xff0c 这
  • 【位运算总结】 之 左移运算

    左移运算的概念 xff1a 左移运算符 应用 xff1a 1 优化代码 因为左移运算比乘法快 xff0c 因此x 61 x 2可优化为x 61 x lt lt 1 2 计算一个数的二进制的某位 如题 xff1a 给定一个含不同整数的集合 x