常见位运算总结

news2025/5/22 22:56:30

 个人主页:Lei宝啊 

愿所有美好如期而遇 


 

目录

前言

1.基础位运算

&运算

|运算

^运算

>>运算

<<运算

~运算

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

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

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

5.位图的思想

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

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

8.位运算的优先级

9.异或运算的运算律


前言

在开始本篇文章时,建议了解 原码,反码,补码以及计算

1.基础位运算

&运算

按照补码进行按位与

  • 0 & 0 = 0  
  • 0 & 1 = 0
  • 1 & 1 = 1 
|运算

按照补码进行按位或

  • 0 | 0 = 0
  • 1 | 0 = 1
  • 1 | 1 = 1
^运算
  • 按位异或,相同为0,不同为1
  • 不进位相加

 按照补码进行按位异或

  • 0 ^ 0 = 0
  • 0 ^ 1 = 1
  • 1 ^ 1 = 0 
>>运算

每向右移动一位,相当于除以2 

<<运算

每向左移动一位,相当于乘以2  

~运算

每个比特位按位取反。

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

#include <iostream>
using namespace std;

//给一个数n,确定他的二进制表示中的第x位,是0还是1
int main()
{

	int n, x;
	//cin >> n >> x;
	
	//000101000000111011011000
	n = 1314520;
	x = 6;

	cout << (1 & (n >> (x - 1))) << endl;

	return 0;
}

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

#include <iostream>
using namespace std;

//将一个数n的二进制表示的第x位修改成1
int main()
{

	int n, x;
	//cin >> n >> x;

	//000101000000111011011000
	n = 1314520;
	x = 6;

	n |= 1 << (x - 1);
	cout << n;

	return 0;
}

 

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

#include <iostream>
using namespace std;

//将一个数n的二进制表示的第x位修改成0
int main()
{

	int n, x;
	//cin >> n >> x;

	//000101000000111011011000
	n = 1314520;
	x = 7;

	n &= ~(1 << (x - 1));
	cout << n;

	return 0;
}

 

5.位图的思想

用一个变量的某个比特位表示某种状态,0表示假,1表示真,我们看图:

在进程的切换与调度中,底层就使用位图去标识运行队列是否为空,还有一个就是Linux下文件类系统调用中,有一个open系统调用,他的第二个参数flags,都是利用了位图。

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

#include <iostream>
using namespace std;

//提取一个数n二进制表示中最右侧的1
int main()
{
	int n, x;
	//cin >> n >> x;

	//000101000000111011011000   n
	//111010111111000100101000  -n
 	n = 1314520;
	x = 7;

	n &= -n;
	cout << n;

	return 0;
}

 

-n:n二进制表示中,最右边1的左边二进制数全部取反。

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

#include <iostream>
using namespace std;

//干掉一个数n二进制表示中最右侧的1
int main()
{

	int n, x;
	//cin >> n >> x;

	//000101000000111011011000   n
	//111010111111000100101000  -n
 	n = 1314520;
	x = 7;

    //000000000000000000001000  n & -n
	n ^= n & -n;
	cout << n;

	return 0;
}

 

#include <iostream>
using namespace std;

//干掉一个数n二进制表示中最右侧的1
int main()
{

	int n, x;
	//cin >> n >> x;

	//000101000000111011011000   n
 	n = 1314520;
	x = 7;

	n &= n - 1;
	cout << n;

	return 0;
}

 n-1 :最右边的1及其右边全部取反

8.位运算的优先级

这里推荐,如果使用位运算,不确定优先级,那么就加括号。

9.异或运算的运算律

  • a ^ 0 = a
  • a ^ a = 0
  • a ^ b ^ c = a ^ (b ^ c)

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

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

相关文章

QML 项目中使用 Qt Design Studio 生成的UI界面

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 今天来和大家聊一下 Qt Design Studio 这个软件。这个软件的主要功能是用来快速完成 UI 界面&#xff0c;就和 widget 中的 desig…

Redis学习笔记(1)——感谢尚硅谷官方文档

Redis学习笔记&#xff08;1&#xff09;——感谢尚硅谷官方文档 1. NoSQL1.1 NoSQL数据库概述1.2 各种NoSQL数据库 2. Redis数据库安装2.1 安装条件2.2 Widows下如何安装Redis?2.3 Linux下如何安装Redis? 3. Redis介绍3.1 Redis 简介3.2 Redis 优势3.3 Redis与其他key-value…

HttpClient库与代理IP在爬虫程序中的应用

目录 前言 一、HttpClient库的基本使用方法 二、代理IP的使用方法 三、代理IP池的使用方法 四、总结 前言 在编写爬虫程序时&#xff0c;我们经常会使用HttpClient库来发送HTTP请求&#xff0c;获取网页内容。然而&#xff0c;有些网站可能会对频繁的请求进行限制&#x…

python的课后练习总结3之条件语句

1,简单点&#xff0c;只有IF IF 后面加入条件然后冒号: 条件成立执行的代码1 条件成立执行的代码2 条件是否成立都执行的代码 身高 float(input(请输入你的身高(米):)) if 身高 > 1.3:print(f您的身高是{身高}米,请您买票) print(祝您旅途愉快) 2,IF 加个else if 条件:…

[论文分享]TimesURL:通用时间序列表示学习的自监督对比学习

论文题目&#xff1a;TimesURL: Self-supervised Contrastive Learning for Universal Time Series Representation Learning 论文地址&#xff1a;https://arxiv.org/abs/2312.15709 代码地址&#xff1a;暂无 摘要 学习适用于各种下游任务的通用时间序列表示具有挑战性&…

无人机低空视角:针对人群密集场景的检测、跟踪和计数技术

无人机低空视角&#xff1a;针对人群密集场景的检测、跟踪和计数技术 DroneCrowdPaper简介数据集ECCV2020挑战DroneCrowd&#xff08;完整版&#xff09; DroneCrowd Paper 无人机在人群中的检测、跟踪和计数&#xff1a;基准研究。 简介 本文提出了一种时空多尺度注意力网络…

数据结构与算法——第一次大作业【考点罗列//错题修正//题解】

目录 一、选择题 ——绪论—— 1.【单选题】——数据结构的研究方向 2.【单选题】 ——数据结构的研究问题 3.【单选题】——数据结构的基本术语及概念 4.【单选题】 ——数据结构与算法 5.【单选题】 ——时间复杂度计算 ——顺序表与链表—— 6.【单选题】——顺序表…

算法训练营Day36(贪心-重叠区间)

都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#xff01; 还是属于那种&#xff0c;做过了也就会了&#xff0c;没做过就很难想出来。 不过大家把如下三题做了之后&#…

多通道病虫害分子检测仪-百科科普知识

在农业科技日新月异的今天&#xff0c;病虫害防治已经成为现代农业的重要一环。为了更精准、更快速地检测和防治病虫害&#xff0c;多通道病虫害分子检测仪应运而生&#xff0c;成为守护绿色家园的"黑科技"。 WX-XC1多通道病虫害分子检测仪是一款集成了分子生物学、…

音频DAC,ADC,CODEC高性能立体声

想要让模拟信号和数字信号顺利“交往”&#xff0c;就需要一座像“鹊桥”一样的中介&#xff0c;将两种不同的语言转变成统一的语言&#xff0c;消除无语言障碍。这座鹊桥就是转换器芯片&#xff0c;也就是ADC芯片。ADC芯片的全称是Analog-to-Digital Converter, 即模拟数字转换…

webpack知识点总结(高级应用篇)

除开公共基础配置之外&#xff0c;我们意识到两点: 1. 开发环境(modedevelopment),追求强大的开发功能和效率&#xff0c;配置各种方便开 发的功能;2. 生产环境(modeproduction),追求更小更轻量的bundle(即打包产物); 而所谓高级应用&#xff0c;实际上就是进行 Webpack 优化…

linux 系统 kill 指令笔记

kill 名称 kill - send a signal to a process 向指定的线程或进程发送信号 描述 The default signal for kill is TERM. Use -l or -L to list availablesignals. Particularly useful signals include HUP, INT, KILL, STOP,CONT, and 0. Alternate signals …

C#: 和时间相关,延时、获取系统时间、时间格式转换、定时器 等

说明&#xff1a;本文记录C# 和时间相关&#xff0c;延时、获取系统时间、时间格式转换、定时器 等&#xff0c;应用和代码。 1.延时函数 System.Threading.Thread.Sleep(20); //毫秒 1.1 主线程不卡延时函数 /* 主线程不卡延时函数 */public static void Delay_ms(int mil…

【C语言期末】基于VS2022的学生成绩管理系统

诚接计算机专业编程任务(C语言、C、Python、Java、HTML、JavaScript、Vue等)10/15R&#xff0c;如有需要请私信我&#xff0c;或者加我的企鹅号&#xff1a;1404293476 本文资源&#xff1a;https://download.csdn.net/download/weixin_47040861/88702521https://download.csd…

Spring Cloud Config相关面试题及答案(2024)

1、什么是 Spring Cloud Config&#xff0c;它解决了哪些问题&#xff1f; Spring Cloud Config 是一个为微服务架构提供集中化外部配置支持的项目。它是构建在 Spring Cloud 生态系统之上&#xff0c;利用 Spring Boot 的开发便利性&#xff0c;简化了分布式系统中的配置管理…

LCR 174. 寻找二叉搜索树中的目标节点

解题思路&#xff1a; 二叉搜索树一般采用中序遍历&#xff08;从小到大排列&#xff09;。 class Solution {int res, cnt;public int findTargetNode(TreeNode root, int cnt) {this.cnt cnt;dfs(root);return res;}void dfs(TreeNode root) {if(root null) return;dfs(ro…

利用蚁剑钓鱼上线CS

前言 ​ 中国蚁剑使用Electron构建客户端软件&#xff0c;Electron实现上用的是Node.js&#xff0c;并且Node.js能执行系统命令&#xff0c;故可以利用蚁剑的webshell页面嵌入js来直接执行命令&#xff0c;进而钓鱼来上线CS。&#xff08;类似Goby&#xff0c;Goby也是使用Ele…

Vue2 - diff 原理(动图演示)

目录 1&#xff0c;diffdiff 的时间点 2&#xff0c;_update 函数3&#xff0c;_patch 函数&#xff08;进行 diff&#xff09;3.1&#xff0c;根节点比较3.2&#xff0c;子节点比较 4&#xff0c;key的问题举例1举例2 1&#xff0c;diff 解释&#xff1a;对比新旧虚拟DOM树&a…

杨中科 ASP.NETCore开发效率利器 HOT RELOAD

HOT RELOAD 1、困惑:修改了服务器端的代码&#xff0c;必须重新运行程序。 2、方法1: [启动 (不调试) ] 3、方法2: .NET 6开始的Hot Reload(热重载) 正常修改代码后 不重启&#xff0c;是无法看到新的数据展示在页面 修改 运行结果&#xff1a; 方式一&#xff1a;设置开始…

excel 插件:Rainbow Analyst Crack

一个插件中包含四种 EXCEL 审核工具检测并修复隐藏的电子表格错误 不要满足于更少&#xff0c;四种领先的电子表格审计工具合二为一 Rainbow Analyst&#xff08;因其对颜色编码的独特强大使用而得名&#xff09;结合了世界级电子表格审核功能的多个领域&#xff1a; Excel™ …