位运算概述

news2025/1/23 22:24:58

首先

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


位运算的概念

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

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

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

非: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


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

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

!!!

!!!

​​​​​​​!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostMan 测试

创建一个集合管理测试接口 token获取 Tests&#xff1a;后置脚本 Api 请求后的操作&#xff0c;一般写断言脚本的地方 Pre-request Script &#xff1a;后置脚本 请求前的操作 以下代码放进Tests 后置脚本当中。 var respObj JSON.parse(responseBody); // 获取到TOK…

C语言之旅:动态内存管理

目录 一.为什么要有动态内存分配 二.malloc和free 2.1 malloc 2.2 free 2. 3malloc和free的使用 三. calloc 四. raelloc 4.1 代码示例&#xff1a; 4.2 注意事项&#xff1a; 4.3 对动态开辟空间的越界访问 4.4 对非动态开辟内存使⽤free释放 4.5 使用free释放⼀块…

分布式系统的一致性与共识算法(四)

Etcd与Raft算法 Raft保证读请求Linearizability的方法: 1.Leader把每次读请求作为一条日志记录&#xff0c;以日志复制的形式提交&#xff0c;并应用到状态机后&#xff0c;读取状态机中的数据返回(一次RTT、一次磁盘写)2.使用Leader Lease&#xff0c;保证整个集群只有一个L…

STM32手写寄存器的方式实现点亮LED灯

这次是从头开始学习STM32&#xff0c;看野火的视频开始学习&#xff0c;感觉需要记录的时候就要记录一下学习的心得。野火视频学习的老师讲的还是很到位的&#xff0c;能够学习到很多的细节之处&#xff0c;有时会感觉很啰嗦&#xff0c;但是不得不说确实很详细&#xff0c;只有…

IT行业现状与探索未来发展趋势

​​​​​​​ 我眼中的IT行业现状与未来趋势 随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。你眼中IT行业的现状及未来发展趋势是…

六西格玛绿带培训:解锁质量工程师的职场新篇章

在质量管理这条道路上&#xff0c;我们或许都曾有过这样的疑问&#xff1a;为何付出了同样的努力&#xff0c;却未能获得预期的回报&#xff1f;当我们看到身边的同行们逐渐步入高薪的行列&#xff0c;而自己却似乎陷入了职业的泥沼&#xff0c;这种对比无疑令人倍感焦虑。然而…

iRemovalPro完美解4G信号,支持A12+,支持6S~14ProMax,支持iOS17.4+

iRemovalPro是一款绕过激活锁界面的解锁工具&#xff0c;可以激活所有iPhone/ipad恢复信号&#xff0c;并且支持插卡接打电话、收发短信、4G流量上网&#xff0c;支持iCloud登录&#xff0c;有消息通知&#xff0c;支持iPhone6S~14ProMax的所有型号&#xff0c;支持iOS15-iOS17…

酷开科技的智能电视操作系统—酷开系统,带来更加舒适的观看体验

酷开科技的智能电视操作系统——酷开系统&#xff0c;通过大数据和人工智能技术的结合&#xff0c;会根据会员的观看历史和收视行为偏好&#xff0c;刻画出“消费者群体画像”&#xff0c;然后将内容进行“人工编辑智能推荐”的方式推送到消费者面前&#xff0c;不仅省去了消费…

僵尸网络的威胁值得关注

僵尸网络&#xff08;botnet&#xff09;是指一组受到恶意软件感染并遭到恶意用户控制的计算机。术语“僵尸网络”由“机器人&#xff08;bot&#xff09;”和“网络&#xff08;network&#xff09;”两个词组合而成&#xff0c;每台受感染设备被称为“机器人”。僵尸网络可用…

谷歌举办Gemini API开发者大赛;ChatGPT iOS版更新支持中文

&#x1f989; AI新闻 &#x1f680; 谷歌举办Gemini API开发者大赛&#xff0c;大奖1981款电动DeLorean 摘要&#xff1a;IT之家 5 月 15 日消息&#xff0c;在 2024 年谷歌 I/O 开发者大会上&#xff0c;谷歌宣布举办 Gemini API 开发者大赛&#xff0c;主要面向个人开发者…

Springboot+Vue项目-基于Java+MySQL的高校专业实习管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Spring MVC(建立连接 + 请求)

文章目录 一、建立客户端和服务器的连接二、如何构造请求&#xff08;传参&#xff09;2.1 构造请求方式 参数通用注解2.2 传递单个参数2.3 传递多个参数2.4 传递数组/集合2.5 传递对象2.6 传递JSON 三、相关的其他请求操作3.1 获取URL中的参数 PathVariable3.2 上传文件 Requ…

Golang | Leetcode Golang题解之第92题反转链表II

题目&#xff1a; 题解&#xff1a; func reverseBetween(head *ListNode, left, right int) *ListNode {// 设置 dummyNode 是这一类问题的一般做法dummyNode : &ListNode{Val: -1}dummyNode.Next headpre : dummyNodefor i : 0; i < left-1; i {pre pre.Next}cur :…

Dubbo配置上的一些概念

对于dubbo在spring中我们可能看到有如下配置&#xff08;可参考Schema 配置参考手册 | Apache Dubbo&#xff09;&#xff1a; dubbo:application:id: dubbo-account-examplename: dubbo-account-example# 是否启用 Dubbo 的 QoS&#xff08;Quality of Service&#xff09;服…

什么是趋肤效应

很多同行来问什么是趋肤效应&#xff0c;趋肤效应应该是附在表面&#xff0c;为什么变成了附在线路横截面的底面&#xff1f;下面就和小易&#xff0c;一起具体了解下趋肤效应。 趋肤效应也称集肤效应&#xff0c;英文术语是Skin effection,它是指在电流流过导体时&#xff0c;…

DOS学习-目录与文件应用操作经典案例-cd

欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.案例 三.练习 一.前言 虽然Windows 2000/XP/2003系统已经不再使用纯DOS平台&#xff0c;但它们内建了一个功能强大的命令行界面。在这个界面中&#xff0c;用户可以像在Wind…

2024.05.15学习记录

1、完成Ts重构Axios项目中更多功能的开发 2、刷题&#xff1a;二叉树&#xff08;代码回忆录&#xff09; 3、复习diff算法源码解读

在k8s中搭建elasticsearch高可用集群,并对数据进行持久化存储

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Elasticsearch简介 2、k8s简介 二、环境准备 …

k8s概述及核心组件

一、k8s概述 1.1 引言 docker compose 单机编排工具 有企业在用 docker swarm 能够在多台主机中构建一个docker集群 基本淘汰集群化管理处理工具 容器 微服务封装 dockerfile 编写成镜像 然后进行发布 dockerfile 可以写成shell脚本&#xff08;函数做调…

xmzs切换镜像源

1.全局安装 npm install xmzs -g 2.mmp ls 查看镜像源 3.mmp use 选择镜像源