位运算总结

在这里插入图片描述

文章目录

    • 🍈1. 基础位运算
    • 🍌2. 给一个数`n`,确定它的二进制表示中的第`x`位是`0`还是`1`
    • 🍏3. 将一个数`n`的二进制表示的第`x`位修改成`1`
    • 🍓4. 将一个数的`n`的二进制表示的第`x`位修改成`0`
    • 🥔5. 位图的思想
    • 🫒6. 提前一个数`n`二进制中最右侧的`1`
    • 🫑7. 干掉一个数`n`二进制表示中最右侧的`1`
    • 🧄8. 运算符优先级
    • 🫘9. 异或`^`运算符的运算律

🍈1. 基础位运算

  • >>:右移操作符——二进制补码右移
  • <<:左移操作符——二进制补码左移
  • ~:按位取反操作符——二进制补码按位取反
  • &:按位与——有假则假(有00)
  • |:按位或——全真为真(全11)
  • ^:按位异或/无进位相加——相同为0,不同为1

不是很了解的可查看此篇文章:C语言——操作符(上)

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

我们先做一个约定:

计算几位几位的时候,从最低位开始(最右侧)

image-20231128194604799

这样的好处就是当我们要左移操作到最低位的时候,直接移动对应的第几位即可

那我们要确定这一位是0还是1,只需要让这个位置& 1即可,这里有两种方法:

  1. 1左移到这个对应的位置,再按位与,这个不常见
  2. 让这个位右移到最低位,然后& 1即可
(n>>x) & 1

🍏3. 将一个数n的二进制表示的第x位修改成1

这里我们让这个一位按位或| 1即可,然后其他位按位或| 0。想要这样,我们只需要将1左移x位即可1<<x

image-20231128200422309

🍓4. 将一个数的n的二进制表示的第x位修改成0

让当前位置按位与上& 0,只需要将1左移到对应位置,然后按位取反,即其他位置全是1,此时这个位置为0

image-20231128201954059

🥔5. 位图的思想

位图的本质其实就是一个哈希表,在大多数情况下都是一个数组,而位图则是用int的二进制位来记录信息。

那这样我们就经常要用到上面的三个思想,来查看或者修改这个二进制位。

关于位图的具体内容,可以查看此篇文章:位图bitset及其应用——【C++实现】

🫒6. 提前一个数n二进制中最右侧的1

这里直接让n & -n即可

-n就是按位取反再+1

image-20231128215419482

我们发现这个-n的操作,本质上其实就是将最右侧的1左边的区域全部变成相反

然后我们按位与下,那么这前面的区域就全部变为0了,这样就实现了将最右侧的1给提取出来了

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

这里的意思就是将最右侧的二进制1变为0,这里只需将n & (n-1)即可

这里n-1的本质就是如果后面是连续的0,则需要一直借位,直到借到1为止,借完之后要-1

image-20231128220252676

所有就是让最右侧的1作为分界线,右边的区域全部变成相反

🧄8. 运算符优先级

能加括号就加括号!这样一定不会错!

能加括号就加括号!这样一定不会错!

能加括号就加括号!这样一定不会错!

🫘9. 异或^运算符的运算律

  1. a^0= a
  2. a^a = 0 (消消乐)
  3. a ^ b ^ c = a ^ (b ^ c)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/227562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python服装电商系统vue购物商城django-pycharm毕业设计项目推荐

系统面向的使用群体为商家和消费者&#xff0c;商家和消费者所承担的功能各不相同&#xff0c;所对象的权限也各不相同。对于消费者和商家设计的功能如下&#xff1a; 对于消费者设计了五大功能模块&#xff1a; &#xff08;1&#xff09; 商品信息&#xff1a;用户可在商品…

MySQL优化技巧

在使用一些常规的 SQL 时&#xff0c;如果我们通过一些方法和技巧来优化这些 SQL 的实现&#xff0c;在性能上就会比使用常规通用的实现方式更 优化分页查询 通常我们是使用 <LIMIT M,N> 合适的 order by 来实现分页查询&#xff0c;这种实现方式在没有任何索引条件支…

Java中的多态究竟是什么?

目录 一.概念二.使用条件三.重写1.概念2.使用条件3.与重载对比4.举例5.为什么需要重写1.重写规则 2.静态绑定--重载3.动态绑定--重写 四.向上转型第一种传参方式&#xff1a;直接赋值第二种传参方式&#xff1a;通过传参优缺点 五.向下转型举例缺点 六.多态的优缺点优点缺点 一…

解锁 ElasticJob 云原生实践的难题

发生了什么 最近在逛 ElasticJob 官方社区时发现很多小伙伴都在头疼这个 ElasticJob 上云的问题&#xff0c;ElasticJob 本就号称分布式弹性任务调度框架&#xff0c;怎么在云原生环境就有了问题了呢&#xff0c;这就要从 Kubenertes 和 ElasticJob 的一些状态化说起。 有意思的…

windows10系统更新失败无法进入系统

用户反馈早上电脑重启&#xff0c;系统在更新卡好久好进去是否更新windows11&#xff0c;选否&#xff0c;重新就反复在更新中无法进入系统。我在测试的过程也是多次更新卡好久无法进入系统&#xff0c;而且出现下面提示 windows10系统更新失败无法进入系统&#xff0c;蓝屏提…

sqli-labs(4)

17. 观察页面发现是一个用来更改用户密码的页面&#xff0c;页面中出现了用户Dhakkan user输入Dhakkan passs输入1发现成功找注入点 先在user尝试&#xff0c;发现不管输入什么都失败在pass中尝试注入 在pass中输入1‘ 报错注入 1 and extractvalue(1,concat(0x5c,database(…

【Electron】上下键切换消息

需求&#xff1a; 如图&#xff0c;需要监听上下键切换消息 Electron 注册 全局快捷键【globalShortcut】监听 在focus注册 在blur 注销 如苹果系统在使用某个软件(focus)时 右上角会有应用标题 Electron 代码&#xff1a; win.on(focus, ()>{globalShortcut.register(U…

OPENWRT解决配置pppoe后无法光猫路由管理界面

一、新建一个wan口 二、设置流量转发 设置完成后保存应用即可

Java基于SpringBoot+vue的租房网站设计与实现(V2.0)

文章目录 一、前言介绍二、主要技术三、系统设计&#xff08;部分&#xff09;3.1、主要功能模块设计3.2、系统登录设计 四、数据库设计&#xff08;部分&#xff09;五、运行截图5.1、 **管理员** **登录****5.2、管理员功能模块**5.2.1、用户管理5.2.2、房屋类型管理5.2.3、房…

阿里云语雀频繁崩溃,有什么文档管理工具是比较稳定的?

10月23 日14:00左右&#xff0c;蚂蚁集团旗下的在线文档编辑与协同工具语雀发生服务器故障&#xff0c;在线文档和官网都无法打开。直到当天晚上22:24&#xff0c;语雀服务才全部恢复正常。从故障发生到完全恢复正常&#xff0c;语雀整个宕机时间将近 8 小时&#xff0c;如此长…

某医院小程序存在支付漏洞和越权

某医院小程序存在支付漏洞和越权查看他人身份证&#xff0c;手机号&#xff0c;住址等信息 一个医院线上的小程序 登陆后点击个人信息&#xff0c;抓包&#xff0c;放到repeter模块&#xff0c; 修改strUserID参数可以越权查看别人信息 放intruder模块可以跑数据&#xff0c;这…

vue+elementUI的tabs与table表格联动固定与滚动位置

有个变态的需求&#xff0c;要求tabs左侧固定&#xff0c;右侧是表格&#xff0c;点击左侧tab&#xff0c;右侧表格滚动到指定位置&#xff0c;同时&#xff0c;右侧滚动的时候&#xff0c;左侧tab高亮相应的item 上图 右侧的高度非常高&#xff0c;内容非常多 常规的瞄点不适…