当前位置: 首页 > news >正文

二进制枚举

一、左移:用来将一个数的各二进制位全部左移n位,低位以0补充,高位越界后舍弃。

  1. n左移1位,n<<1,相当于2*n

  1. 1左移n位,1<<n,相当于2^n

二、右移:将一个数的各二进制位右移N位,移到右端的低位被舍弃,高位以符号位填充

  1. n右移1位,n>>1,相当于|n/2|

  1. x右移n位,x>>n,相当于|x/n|

三、常用操作

  1. (n >> k) & 1,求n二进制下的第k位是0还是1,是1结果为真,是0结果为假。因为1的二进制数中只有第0位数是1,其余位数都是0。

  1. n^=1,即n=n^1,能让n变成与原来相反的数(0或1)

  1. n | (1 << k),能把n的第k位变成1

  1. x=x&(x-1):用于消去x的最后一位

四、二进制状态压缩

二进制状态压缩是指讲一个长度为m的bool数组用一个m位二进制整数表示并存储的方法。利用下列位运算操作可以实现bool数组对应下标元素的存取。

取出整数n在二进制表示下的第k位 ( n >> k ) & 1

取出整数n在二进制表示下的第0~k-1位(后k位) n & ( ( 1 << k ) - 1 )

把整数n在二进制表示下的第k位取反 n ^ (1 << k)

对整数n在二进制表示下的第k位赋值1 n | ( 1 << k )

对整数n在二进制表示下的第k位赋值0 n & ( ~ ( 1 << k )

http://www.lryc.cn/news/11028.html

相关文章:

  • 2|数据挖掘|聚类分析|k-means/k-均值算法
  • 使用和制作动、静态库
  • 【Java基础】023 -- 集合进阶(List、Set、泛型、树)
  • 面试题整理01-集合详解
  • 数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)
  • ArcGIS网络分析之发布网络分析服务(二)
  • js实现元素样式切换的基本功能
  • java 策略模式 + 工厂模式 实例
  • 本地生成动漫风格 AI 绘画 图像|Stable Diffusion WebUI 的安装和部署教程
  • 华为OD机试 - 异常的打卡记录 | 备考思路,刷题要点,答疑 【新解法】
  • 「机器学习笔记」之深度学习基础概念(基于Pytorch)
  • 概率和似然
  • 前期软件项目评估偏差,如何有效处理?
  • Xline v0.2.0: 一个用于元数据管理的分布式KV存储
  • CompletableFuture
  • 面试不到10分钟就被赶出来了,问的实在是太变态了...
  • 【C++】类与对象 (四)初始化列表 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化
  • 04:进阶篇 - 编译 CTK
  • SQL73 返回所有价格在 3美元到 6美元之间的产品的名称和价格
  • 【Linux 多线程互斥】如何保证锁的原子性(互斥的原理)
  • Android 实现沉浸式全屏
  • 数据分析与SAS学习笔记6
  • 自动化完成1000个用户的登录并获取token并生成tokens.txt文件
  • 2023年全国最新安全员精选真题及答案1
  • NoMachine 输入用户名密码后 闪断 解决办法
  • WebADI - 参数的使用
  • 【OJ】两个圆
  • 一文读懂澳洲医疗:白菜价的药物怎么领?
  • scrum看板视图切换时间线视图做项目管理
  • 10、MySQL查询优化