位运算总结

在这里插入图片描述

文章目录

    • 🍈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.mfbz.cn/a/197706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux如何查找某个路径下大于1G的文件

find 命令可以用于在 Linux 或 macOS 系统中查找文件和目录。如果你想查找大于1GB的文件&#xff0c;可以使用 -size 选项结合 参数。以下是一个示例&#xff1a; find /path/to/search -type f -size 1G这里的 /path/to/search 是你要搜索的目录的路径。这个命令将查找该目录…

算法基础二

回文数 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 示例 1&#xff1a; 输入&#xff1…

Co-DETR:DETRs与协同混合分配训练论文学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2211.12860.pdf 代码地址&#xff1a; GitHub - Sense-X/Co-DETR: [ICCV 2023] DETRs with Collaborative Hybrid Assignments Training 摘要 作者提出了一种新的协同混合任务训练方案&#xff0c;即Co-DETR&#xff0c;以从多种标…

你要的fiddler快捷键全部在这里了,学最全的快捷键,做最快的IT程序员

一、常用三个快捷键 ctrlX :清空所有记录 CtrlF&#xff1a;查找 F12&#xff1a;启动或者停止抓包 使用 QuickExec Fiddler2 成了网页调试必备的工具&#xff0c;抓包看数据。Fiddler2自带命令行控制。 fiddler 命令行快捷键&#xff1a;ctrl q &#xff0c;然后 输入 help…

sqli-labs靶场详解(less25/25a-less28/28a)

在SQL注入过程中难点就是判断注入点 只要注入点确定了 获取数据库数据的过程就是复制 从这关开始 只进行判断注入点了和代码逻辑分析了 因为注入操作太简单了&#xff08;不演示了&#xff09; 目录 less-25 less-25a less-26 less-26a less-27 less-27a less-28 less-…

Python入职某新员工大量使用Lambda表达式,却被老员工喷是屎山

Python中Lambda表达式是一种简洁而强大的特性,其在开发中的使用优缺点明显,需要根据具体场景权衡取舍。 Lambda表达式的优点之一是它的紧凑语法,适用于一些短小而简单的函数。这种形式使得代码更为精炼,特别在一些函数式编程场景中,Lambda表达式可以提高代码的表达力。此外…

第一百八十三回 如何给图片添加阴影

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"自定义可以滑动的刻度尺"样相关的内容&#xff0c;本章回中将介绍" 如何给图片添加阴影".闲话休提&#xff0c;让…

基于Vue+SpringBoot的木马文件检测系统

项目编号&#xff1a; S 041 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S041&#xff0c;文末获取源码。} 项目编号&#xff1a;S041&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…

【数据结构】八大排序(二)

目录 前言&#xff1a; 冒泡排序 冒泡排序代码实现 冒泡排序特性总结 快速排序 单趟排序hoare版本 单趟排序挖坑法 单趟排序快慢指针法 快速排序整体概览 快排的优化 三数取中法选key 小区间优化 前言&#xff1a; 上文介绍了直接插入排序&#xff0c;希尔排序&…

C# ReadOnlyRef Out

C# ReadOnly ReadOnly先看两种情况1.值类型2.引用类型 结论 Ref Out ReadOnly官方文档 ReadOnly 先看两种情况 1.值类型 当数据是值类型时&#xff0c;标记为Readonly时&#xff0c;如果再次设置值&#xff0c;会提示报错&#xff0c;无法分配到只读字段 public class A {pri…

基于LNMP快速搭建WordPress平台

目录 1 LNMP简介 2 WordPress简介 3 安装MySQL环境 3.1 安装MySQL 3.1.1 下载wget工具 3.1.2 下载MySQL官方yum源安装包 3.1.3 安装MySQL官方yum源 3.1.4 mysql安装 3.2 启动MySQL 3.3 获取默认密码 3.4 登录MySQL ​ 3.5 修改密码 3.6 创建WordPress数据库并授权 3.6.1 创…

WPF创建进度条

使用wpf做一个原生的进度条&#xff0c;进度条上面有值&#xff0c;先看效果。 功能就是点击按钮&#xff0c;后台处理数据&#xff0c;前台显示处理数据的变化&#xff0c;当然还可以对进度条进行美化和关闭的操作&#xff0c;等待后台处理完毕数据&#xff0c;然后自动关闭。…

设计师福利!2024在线图标设计网站推荐,不容错过的宝藏!

在当今竞争激烈的商业环境中&#xff0c;公司或个人品牌的视觉识别元素已经成为区分你和竞争对手的关键因素之一。一个独特而引人注目的标志可以深深扎根于人们的心中&#xff0c;并在消费者心中建立一个强烈的品牌印象。如果你正在寻找合适的工具来创建或改进你的标志&#xf…

js数组map()的用法

JavaScript Array map() 方法 先说说这个方法浏览器的支持&#xff1a; 支持五大主流的浏览器&#xff0c; 特别注意&#xff1a;IE 9 以下的浏览器不支持&#xff0c;只支持IE 9以上的版本的浏览器 特别注意&#xff1a;IE 9 以下的浏览器不支持&#xff0c;只支持IE 9以上的…

基于mvc电影院售票预订选座系统php+vue+elementui

本影院售票系统主要包括二大功能模块&#xff0c;管理员功能模块和用户功能模块。 &#xff08;1&#xff09;管理员模块&#xff1a;系统中的核心用户管理员登录后&#xff0c;通过管理员功能来管理后台系统。主要功能有&#xff1a;首页、个人中心、电影类型管理、场次时间管…

Corel产品注册机Corel Products KeyGen 2023 – XFORCE解决会声会影2023试用30天

CorelDRAW注册机2023支持全系列产品_Corel Products KeyGen 2023 X-FORCE v8 CorelDRAW注册机2023支持全系列产品_Corel Products KeyGen 2023 X-FORCE v8&#xff0c;Corel产品注册机&#xff08;Corel Products KeyGen 2023 – XFORCE&#xff09;&#xff0c;支持Corel旗下所…

jQuery_07 函数的使用

在jQuery中&#xff0c;如何使用函数呢&#xff1f; 1.基本函数 函数(常用的) 其实有很多函数&#xff0c;但是我们只需要掌握常用的函数即可 1.val 操作dom对象的value val() 没有参数 获取dom数组中第一个dom对象的value值 val(value) 有参数 设置dom数组中所有dom对象的…

Zotero | 取消翻译后自动添加笔记

目录 Step1&#xff1a;点击 “编辑” << “首选项” Step2&#xff1a;“翻译” << 取消勾选 “自动翻译批注” 在 Zetoro 中&#xff0c;选择颜色标记勾画的内容&#xff0c;将会自动生成一条笔记&#xff0c;如下图所示&#xff1a; 本人觉得很鸡肋&#xff0…

记录本地与服务器之间数据传输方法(上传、下载文件)

文章目录 一、使用scp命令实现参数说明示例说明 二、使用工具实现windows系统苹果系统如有启发&#xff0c;可点赞收藏哟~ 一、使用scp命令实现 scp 是 secure copy &#xff08;安全复制&#xff09;的缩写, scp 是基于 ssh 登陆进行安全的远程文件拷贝命令。相当于 cp 命令 …

渗透测试考核--两层内网 cs windows socks5

这里考核为渗透 这里是网络拓扑图 这里记录一下 两台外网 两台内网 首先拿到C段 nmap进行扫描 外网1 nmap -p 80 172.16.17.2/24 主机存活 一般都是web服务入手 所以我们指定80端口 然后去查找开放的 最后获取到2个ip Nmap scan report for 172.16.17.177 Host is u…
最新文章