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

算法:位运算

1.基础位运算

1.1 <<左移

1.2 >>右移

1.3 ~按位取反

1.4 & 按位与:有0就是0

1.5 | 按位或:有1就是1

1.6 ^ 按位异或:相同为0,相异为1/无进位相加

2.给一个数n,确定他的二进制表示中的第x位是0还是1

约定:二进制数从右向左,是从低位到高位;且有第0位;比如:0x0000000

int n=100;

(n>>x) &1        //若是0则返回0;若是1则返回1

3.将一个数n的二进制表示的第x位修改成1,其余位不变

int n=100;

(1<<x) | n

4. 将一个数n的二进制表示的第x位修改成1,其余位不变

int n=100;

(~(1<<x)) & n

5.位图的思想

哈希的思想:是通过K-V的值产生映射,一一对应;

哈希表的思想:多数情况下是一个数组,产生下标与数组元素的映射;记录一些信息;方便我们查找;

由此推演:

位图的思想:由比特位来记录信息(用一个变量的二进制位来记录信息,比如int)

int arr[5]={0};

arr[0]中存在32位;每一位可以放1或0;代表此数据存不存在;

我们提出疑问,一个int类型只能放32个?我想存64,怎么办?

答:64/32=2;

arr[1]的第0位就可以储存64;若存在则为1;如不存在则为0;

此例只是多数情况的一种案例;

6.提取一个数n,二进制表示中最右侧的1—lowbit

00110010010        //将最右侧的1提取出来->00000000010

n &(-n)        //-n将最右侧的1,左边的区域全部变成相反

7.干掉一个数n二进制表示中的最右侧的1

00110010->00110000

n&(n-1)        //n将最右侧的1,右边的区域全部变成相反

8.运算位的优先级

去他呀的优先级;能加括号加括号;反正括号()的优先级高;绝对不会出错;

9.异或^的运算规律

9.1 a^0=a;

9.2a^a=0(消消乐)

3.a^b^c=a^(b^c);/ a^b^c=a^c^b;


http://www.kler.cn/news/341186.html

相关文章:

  • 【C语言】数组(下)
  • 【CSS】让元素消失的方式
  • ceph基础
  • C++入门基础知识106—【关于C++continue 语句】
  • 操作系统中的并发控制——使用条件变量同步
  • linux-二进制工具
  • 深度学习基础—交并比与非极大值抑制
  • Java如何对接云闪付支付接口及示例
  • 基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统】
  • 无感升级有三种常见的可行性方案:蓝绿部署、灰度发布、和滚动更新
  • Python Django ORM 的工作原理
  • arcgis for js点位渲染与实际坐标不一致且popupTemplate偏移
  • 面试面经|大模型算法岗常见面试题100道
  • 解读KP85211ASGA:专业半桥栅极驱动器的先进设计与优势
  • ML 系列:机器学习和深度学习的深层次总结(16) — 提高 KNN 效率-使用 KD 树和球树实现更快的算法
  • VmWare中安装CenterOs(内网服务器)
  • 字节跳动青训营开始报名了!
  • VS新建项目默认路径设置
  • 决策树随机森林-笔记
  • 《网络基础之 HTML 与 CSS 基础 —— 网页的基本结构解析》