位运算概述

首先

位运算这个东西在考试中十分容易考,所以要多多看一看位运算的相关知识,多刷一刷题之类的。


位运算的概念

位运算就是二进制数据进行运算的运算符。

注意:通常我们用二进制补码来表示,补码的符号位也是要参与运算的。

通常的位运算分为:与、或、非、异或、左移、右移等。

非:not 符号:¬        与:and  符号:∧        或:or 符号:∨        异或:xor 符号:⊕

 左移:<<        右移:>>

非:按位取反,用符号 “ ¬ ” 表示,c++用 “ ~ ” 。。如:¬ 101 = 010 。

与:同一位都为 1 时结果才为 1(真),否则为 0 (假)。用符号“∧”表示,c++用 “ & ” 。如:101 ∧ 110 = 100 。

或:两个二进制补码的同一位都为 0 时结果才为 0 (真),否则为 1 (假)。用符号“∨”表示,c++用 “ | ” 。如:101 | 100 = 010 。

异或: 如果两个二进制补码不相同,则异或结果为 1 (真),如果两个二进制补码相同,异或结果为 0 (假)。用符号 “ ⊕ ” 表示,c++用 “ ^ ” 。如:1010 ⊕ 1111 = 0101 。常见用法:反转二进制,只需要将想要反转的位异或 1 就可以了。

左移:将原本的二进制补码进行往左偏移运动,空位补 0 。

如:

原数:1010 。

1010 << 1 变成: 1010_(“_”是缺位的意思)最后变成: 10100 。

现数:10100(多了一个 0 )。

右移:将原本的二进制补码进行往右偏移运动。空位补 0 ,超位的删除。

如:

原数:1011 。

1011 >> 1 变成: _101 ' 1 '(“_”是缺位的意思,引号引出来的是超位)最后变成: 0101 。

现数:0101(最后一个 1 被删除了,前面补了一个 0 )。


优先级

注意:同级的运算符不分高低,计算时按照从左到右运算。


位运算的运用

若二进制补码为 S ,那么对 S 有以下操作(反向从第 0 位开始):

① 判断第 i 位是否为 0:

S &( 1 << i )== 0,将 1 左移 i 位与 S 进行与运算后,看结果是否为 0 。

( S >> i )& 0x0000001 看结果是否为 0 。

② 将第 i 位设置为 1:

S |( 1 << i ),将 1 左移 i 位与S进行运算。

③ 将第 i 位设置为 0:

S & ~( 1 << i ),S与第 i 位为 0,其余位为 1 的数进行与运算。

如:S = 1010101,i = 5 实际上是第 6 位。

S &( 1 << i ):1010101 & 0100000 = 000000

④ 清零:n = 0 或 n & =0

⑤ 判断奇偶:a % 2 == 0 或 (a & 1)== 0

⑥ 取一个数的指定位:如:x = 1010 1110,y = 0000 1111,只需(x & y),结果:0000 1110

⑦ 判断 x 是不是 2的幂次:x & x - 1

⑧得到最后的 1 及后面的 0(2 的幂次) x & -x

位运算效率比较高,如果遇到有幂次或者 2 的倍数等题目,尽量使用位运算,不会的千万别使用 !

2^{n}:1 << n

n/2:n >> 1

n*2:n << 1


最后(不想看的可以不看)

这个博主真有趣,给他点赞,关注加收藏吧!

!!!

!!!

​​​​​​​!!!

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

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

相关文章

番外篇 | 一文读懂卷积神经网络(CNN)的基础概念及原理

前言:Hello大家好,我是小哥谈。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。本文旨在对卷积神经网络进行详细的讲解,从基本原理到实际应用,帮助读者全面了解CNN的工作原理、优势和基本组成等,以及其在现实生…

HNU-算法设计与分析-作业3

第三次作业【动态规划】 文章目录 第三次作业【动态规划】<1>算法实现题 3-1 独立任务最优解问题<2>算法实现题 3-4 数字三角形问题<3>算法实现题 3-8 最小m段和问题<4>算法实现题 3-25 m处理器问题 <1>算法实现题 3-1 独立任务最优解问题 ▲问…

巴伦电路的原理及设计

本文档是针对Appcad帮助文档及si4468等电路设计内容的整合&#xff0c;参考了其中的内容。 1.巴伦的传输线与集总电路转换简述 巴伦是一种在平衡和非平衡电路连接之间进行转换的电路。balun 一词是由 BALanced 和UNbalanced 两个词的缩写衍生而来的首字母缩写词。不平衡连接也…

svn如何远程访问?

svn&#xff08;Subversion&#xff09;是一种版本控制系统&#xff0c;广泛应用于软件开发领域。它能够追踪文件和目录的变化&#xff0c;记录每个版本的修改内容&#xff0c;并允许多人协同开发。svn的远程访问功能允许开发人员可以在不同的地点访问和管理代码&#xff0c;提…

AIGC时代已至,你准备好抓住机遇了吗?

一、行业前景 AIGC&#xff0c;即人工智能生成内容&#xff0c;是近年来人工智能领域中发展迅猛的一个分支。随着大数据、云计算、机器学习等技术的不断进步&#xff0c;AIGC已经取得了显著的成果&#xff0c;并且在广告、游戏、自媒体、教育、电商等多个领域实现了广泛应用。…

24年湖南三支一扶报名流程图及报名照片要求

24湖南三支一扶报名流程图&#xff0c;照片要求☑️ ✔️报名时间&#xff1a;5月15日9:00至5月23日17:00 ✔️报名方式 报考人员登录市州人力资源社会保障局官网、市州人事考试网等查看各地公告&#xff0c;按要求报名。 ✔️报名流程&#xff08;湖南各地市单独报名&…

EtherCAT通信特点_7

一个 EtherCAT 数据帧足以完成所有节点控制数据的发送和接收。 question&#xff1a;数据会不会超过限制&#xff1f; 一个 EtherCAT 数据帧足以完成所有节点控制数据的发送和接收&#xff0c;这种高性能的运行模式克服了前面章节描述的各种问题&#xff01; EtherCAT 主站发送…

分布式计算、并行计算、网格计算、边缘计算

分布式计算 分布式计算是一种计算方法&#xff0c;它将一个大型的计算任务分解成多个子任务&#xff0c;并将这些子任务分布在网络上的多台计算机&#xff08;节点&#xff09;上同时执行。这些节点通过通信网络协同工作&#xff0c;共同完成任务。每个节点可以独立处理自己的…

VS2022如何添加现有项

以 想在队列里&#xff0c;使用堆栈的.c&#xff0c;.h文件 为例 目录 1.复制堆栈的.c&#xff0c;.h文件 ​编辑 2.打开队列所在项目的文件夹 3.粘贴堆栈的.c&#xff0c;.h文件 4.在头文件和源文件添加相应的堆栈的.c&#xff0c;.h文件 1.复制堆栈的.c&#xff0c;.h文件…

【Python探索之旅】元组

元组的作用 遍历 修改 元组运算符 索引和切片 加法运算符 重复运算符 比较运算符 完结撒花 前言 元组(tuple)是一种静态的(immutable)或者说是不可变(unchangeable)的数据结构&#xff0c;里面的元素按照一定的顺序排列。它是静态的&#xff0c;所以元组里的元素不能被…

Nginx企业级负载均衡:技术详解系列(1)

你好呀&#xff0c;我是赵兴晨&#xff0c;文科程序员。 最近&#xff0c;我注意到关于Nginx的文章总是能吸引到异常多的流量。这让我意识到&#xff0c;或许大家对这个话题有着浓厚的兴趣。既然如此&#xff0c;我决定将更多关于Nginx的深度内容与大家分享。 在接下来的时间…

[数据集][目标检测]肺结节检测数据集VOC+YOLO格式1186张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1186 标注数量(xml文件个数)&#xff1a;1186 标注数量(txt文件个数)&#xff1a;1186 标注…

【LAMMPS学习】十、LAMMPS辅助工具(1)

10. 辅助工具 LAMMPS 被设计为用于执行分子动力学计算的计算内核。设置和分析模拟通常需要额外的预处理和后处理步骤。此类工具的列表可以在 LAMMPS 网页上的以下链接中找到&#xff1a; 前/后处理 外部 LAMMPS 软件包和工具 Pizza.py 工具包 Pizza.py 的最后一个链接是桑迪…

英伟达发布 VILA 视觉语言模型,实现多图像推理、增强型上下文学习,性能超越 LLaVA-1.5

前言 近年来&#xff0c;大型语言模型 (LLM) 的发展取得了显著的成果&#xff0c;并逐渐应用于多模态领域&#xff0c;例如视觉语言模型 (VLM)。VLM 旨在将 LLM 的强大能力扩展到视觉领域&#xff0c;使其能够理解和处理图像和文本信息&#xff0c;并完成诸如视觉问答、图像描…

在springboot项目中自定义404页面

今天点击菜单的时候不小心点开了一个不存在的页面&#xff0c;然后看到浏览器给的一个默认的404页面 后端的程序员都觉得这页面太丑了&#xff0c;那么怎么能自定义404页面呢&#xff1f; 很简单&#xff0c;在我们的springboot的静态资源目录下创建一个error包&#xff0c;然…

开发属于自己的Spring Boot Starter-18

为什么要开发专用的Spring Boot Starter Spring在通常使用时&#xff0c;一般是通过pom.xml文件中引入相关的jar包&#xff0c;然后再通过application.yml文件配置初始化bean的配置&#xff0c;但随着项目越来越复杂或是项目组中的应用数量越来越多&#xff0c;可能会带来几个…

邦注科技 即热式节能模温机的原理及应用介绍

模温机是一种用于控制模具温度的设备&#xff0c;它在各种工业领域中发挥着重要作用&#xff0c;特别是在塑料加工行业中。以下是关于模温机的原理及应用的详细介绍&#xff1a; 原理 模温机的工作原理主要是通过加热和冷却功能&#xff0c;维持模具温度在一个恒定的范围内。…

Redis - hiredis源码安装和接口使用介绍

一、hiredis源码安装说明 本文创作基于 hiredisv1.2.0版本 1.简介 hiredis是一个用于与Redis交互的C语言客户端库。它提供了一组简单易用的API&#xff0c;使开发人员可以轻松地连接到Redis服务器&#xff0c;并执行各种操作&#xff0c;如设置和获取键值对、执行命令、订阅和…

绝地求生:29.2商城更新内容预览:挣脱尘网通行证,经典皮肤返场,空投活动

就在今天历经9小时维护&#xff0c;29.2版本终于上线&#xff0c;柠檬茶带大家一起看看&#xff0c;这次游戏里都更新了哪些内容吧。 挣脱尘网通行证 豪华版&#xff1a;$14.99 普通版&#xff1a;$4.99 豪华版比普通版多10级升级券和2套生存者宝箱 分支一 分支二 分支三 额外…

我21岁玩“撸货”,被骗1000多万

最近&#xff0c;撸货业界内发生了一些颇受瞩目的事件。 在郑州&#xff0c;数码档口下面抢手团长跑路失联&#xff0c;涉及金额几百万&#xff0c;在南京&#xff0c;一家知名的电商平台下的收货站点突然失联&#xff0c;涉及金额高达一千多万&#xff0c;令众多交易者震惊不已…