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

位运算基础知识及性质(精简总结)

目录

简介

基础知识

常用性质


简介

程计算机中的数在内存中都是以二进制形式进行存储的,用位运算就是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高,在程序中尽量使用位运算进行操作,这会大大提高程序的性能。

基础知识

  • 与运算(&):两个数的对应位都为1时结果为1。
  • 或运算(|):两个数的对应位有一个为1时结果为1。
  • 异或运算(^):两个数的对应位不相同时结果为1。
  • 非运算(~):一个数的每个位取反。
  • 左移(<<):二进制表示左移若干位,每左移一位,相当于该数乘以2
  • 右移(>>):二进制表示右移若干位,每右移一位,相当于该数除以2

常用性质

  • 任何数与 0 进行与运算都是 0
  • 任何数与 0 进行或运算都是本身
  • 双重非运算可以使得小数快速取整
  • 任何数与自己进行异或运算都为 0,所以任何数与 0 进行异或运算都是本身
x^x=0,x^0=x
(比较两值是否相等)
  • 实现乘除法
数 a 向右移一位,相当于将 a 除以 2;数 a 向左移一位,相当于将 a 乘以 2
  • 异或完成变量值交换
//位与操作
void swap(int &a, int &b) {a ^= b;b ^= a;a ^= b;
}
  • 与 1 进行与运算可以用来判断数的奇偶
只要根据数的最后一位是 0 还是 1 来决定即可,为 0 就是偶数,为 1 就是奇数
  • (a |= 1 << i) :将第 i + 1 个二进制位设为 1
  • [ a &= ~(1 << i) ] :将第 i + 1 个二进制位设为 0
http://www.lryc.cn/news/195932.html

相关文章:

  • 阵列信号处理_对比常规波束形成法(CBF)和Capon算法
  • 通过循环生成多个echarts图表并实现自适应
  • MySQL——六、库表操作(下篇)
  • 自动化办公篇之python批量改名
  • Android MediaCodec将h264实时视频流数据解码为yuv,并转换yuv的颜色格式为nv21
  • Postgresql SQL 字段拼接
  • MySQL 迁移完不能快速导数据了?
  • Lazysysadmin靶机
  • LeetCode09——回文数
  • 云安全—分布式基础
  • Spring(18) @Order注解介绍、使用、底层原理
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv6的轧钢表面细小缺陷检测
  • leetcode:507. 完美数(python3解法)
  • 智能物联网解决方案:蓝牙IOT主控模块打造高效监测和超低功耗
  • vue 拿到数据后,没有重新渲染视图,nuxt.js拿到数据后,没有重新渲染视图,强制更新视图
  • Docker基础操作命令演示
  • XTU-OJ 1175-Change
  • Python环境安装
  • 苏轼在密州的四首千古名作
  • [计算机提升] 域及域用户(组)
  • 命令行配置文件
  • MPP产品介绍-定位-应用场景-技术特点
  • Linux性能优化--性能工具:磁盘I/O
  • Archive Team: The Twitter Stream Grab
  • Vue-props配置功能
  • iMazing 3中文版功能介绍免费下载安装教程
  • 给课题组师弟师妹的开荒手册(终篇)
  • 【Eclipse】安装与卸载教程
  • WordPress还是Shopify?如何选择最适合您业务的网站建设平台?
  • Java Kids-百倍提速【Mac IOS】