位运算基础知识详解
创作时间:
作者:
@小白创作中心
位运算基础知识详解
引用
CSDN
1.
https://blog.csdn.net/2301_80007603/article/details/138288634
位运算是计算机科学中的基础概念,它直接操作二进制数,能够实现许多高效的算法和数据结构。本文将详细介绍位运算的基本操作、规律及其在实际编程中的应用,帮助读者深入理解这一重要技术。
一、定义
众所周知,计算机中数都是以二进制的形式存储的,位运算是指一种对二进制数进行操作的运算。在运算中除了左右移动运算每一位独立,各自得到结果。
注意:
- 位运算在竞赛中常常考察异或的性质、状态压缩、与位运算相关的数据结构(如树状数组、01Tire、01线性表)以及构造题。
- 位运算需要注意有符号整数的运算,因为它们含有符号位,会造成影响。
二、主要操作
按位与(AND,&)
用于两个操作数的对应位数进行逻辑与操作,二者都为1时结果为1,否则为0(类似电路中的与门)。
进行与运算后结果不会变大。按位或(OR,|)
二者有1就为1(类似或门)。
结果不会变小。按位异或(XOR,^)
两位不同时结果为1。
结果大小不一定。
按位异或满足以下运算规律:
- 交换律:a^b=b^a
- 结合律:a^(b^c)=(a^b)^c
- 自反律:a^a=0
- 零元素:a^0=a
- 逆运算:a^b=c => a=c^b(由自反律可得)
按位取反(~)
1变0,0变1,所以常用于无符号整型,否则符号位会造成影响。按位左移(<<)
将一个数的二进制向左移动指定的位数,移动后低位补0(若是有符号整型,注意不要移动到符号位上)。
左移操作相当于对原数乘以2的移动数的次方。按位右移(>>)
向右移动指定位数,高位补0,相当于原数除以2的移动数的次方,取整数。
好玩的是面对有符号整型时,右移会导致高位补1。
#include"bits/stdc++.h"
using namespace std;
int main()
{
cout<<bitset<32>(1<<31)<<'\n';//32位是一个整型的位数
cout<<bitset<32>((1<<31)>>31)<<'\n';
return 0;
}
三、应用
判断奇数偶数(x&1)
我们通常会用%来判断奇数偶数,但也可以用与1判断。
二进制中,若末尾是1则为奇数,所以与时只用看最后一位。
1&1->1 0&1->0
所以1为奇数 0为偶数获取二进制中某一位
x>>i&1 ,其中i表示某一位修改二进制位中的某一位为1
x|(1<<i) 若是修改为0,则使用与运算判断一个数是否为二的幂次方
x&(x-1) 如果是2的幂次方,则二进制中只有一个1,x-1就有很多个连续的1,并且和x的1没交集,两者运算一定为1。获取二进制中最低位的1
lowbit(x)=x&-x (常用于树状数组)
热门推荐
牛蒡根泡水喝的七大功效与禁忌
如何查询企业是否进入破产清算程序
老人如何吃肉才是最健康 教你肉类食品的科学健康搭配
301医院教授:少吃点肉吧!人到中老年应该吃什么肉?不妨了解下
亚冠前瞻:决战川崎前锋,申花接连遭遇3个坏消息,取胜概率大降
新研究或揭示贝多芬耳聋原因
热带气候类型及其特征
公务员考试科目有哪些变化?
波兰LGBTQ+群体移民英国:工作机会还是社会包容?
神秘信使:探索生命微观世界中的外泌体
演出经纪人证:掌握文化产业市场的利器
工伤伤残补助金由谁支付?一文详解支付主体与赔偿标准
房产证的法律效力如何保障?它在交易中有哪些具体作用?
什么是劳务合同的主要条款?
全方位排查 立体化防护 甘肃公安筑牢校园安全网
夜间生存指南:黑暗中的生存策略
氧化锆陶瓷的热压铸成型方法
赵孟頫书法探析:秀丽圆润的赵体风韵
沪苏浙皖发布2024年经济成绩单,看点不只是江苏GDP增量全国第一
如何理解密度函数、分布函数与重分布函数之间的关系?
米塔2025最新版本下载安装
野生眉是什么意思
代位继承权可以再转继承吗?
鲁钰:融合传统与创新的国画艺术家
其他综合收益的概念
护理临床智能决策系统:大语言模型与本地知识库的融合与应用
过敏性鼻炎不会导致癌变,但这些管理方法很重要
过敏性鼻炎患者饮酒会加重病情吗?一文详解酒精影响
巴菲特四季度大调仓:增持消费股,科技股持仓转向防御?
股票下跌不用慌!教你用美股期权来“护盘”