leetcode刷题笔记——位运算

C/C++语言中逻辑右移和算数右移共享同一个运算符>>

如果运算数类型是unsigned则采用逻辑右移,而signed则采用算数右移。对于signed类型的数据,如果需要使用算数右移,或者unsigned类型的数据需要使用逻辑右移,都需要进行类型转换。

#include
using namespace std;

int main(){
    int a=0xFFFFFFFF;
    cout<<(unsigned)a>>1<>1)<

常用位运算技巧:

1. n&1,n>>=1;

n>>=1 即 n=n>>1

2. n=n&(n-1)

n&(n-1):把n的二进制中,最后一个出现的1改为0

3.异或

异或:同0异1

任何数和本身异或为0
应用举例:将nums中所有数字执行异或运算,留下的结果则为出现一次的数字x

leetcode刷题笔记——位运算_第1张图片

4.进位:carry=(a&b)<<1

你可能感兴趣的:(leetcode,笔记,算法)