当前位置: 首页 > web >正文

关于位运算的一些小记

目录

1.判断一个整数是不是2的幂

2.判断一个整数是不是3的幂

3.大于n的最小的2次幂的数

4.交换两个数

 5.找到1-n中缺失的数字

6.判断数组中2个出现次数为奇数的数

6.求给定范围内所有数字&的结果

7. 求出现次数少于m的数 


1.判断一个整数是不是2的幂

 提取出二进制里最右侧的1

bool is_mi(int n){//注意运算符的优先级,这里要加括号 return n>0&&n==(n&(~n+1));
}

2.判断一个整数是不是3的幂

如果一个数字是3的次幂,那么这个数一定 只含有3的这个质数因子,1162261467是int范围内最大的3次幂,如果1162261467%n!=0那么就不是3的次幂

bool is_mi(int n){return n>0&&1162261467%n==0;
} 

3.大于n的最小的2次幂的数

如果n是负数直接返回1,否则的话进行位运算的操作

int  mi(int n){if(n<0)return 1;n--;n|=n>>1;n|=n>>2;n|=n>>4;n|=n>>8;n|=n>>16;return n+1;
}

4.交换两个数

void swap(int a,int b){a=a^b;b=a^b;a=a^b;
}

 5.找到1-n中缺失的数字

int missing(int n,int a[]){int x=0;for(int i=0;i<n;i++){x^=i;x^=a[i];}x^=n;return x;
} 

6.判断数组中2个出现次数为奇数的数

void que2(){
int x=0;
for(int i=0;i<12;i++)
x^=a[i];
int y=x&(~x+1);
int x1=0;
for(int i=0;i<12;i++){if((a[i]&y)==0)x1^=a[i];
}
x^=x1;
cout<<x<<" "<<x1; 
}

6.求给定范围内所有数字&的结果

int rek(int l,int r){while(l<r)r-=r&(~r+1);return r;
}

7. 求出现次数少于m的数 

void  kk(int m){
memset(cnt,0,sizeof(cnt));
for(int i=0;i<12;i++){for(int j=0;j<32;j++)cnt[j]+=(a[i]>>j)&1;
}
int ans=0;
for(int i=0;i<32;i++){if(cnt[i]>0&&cnt[i]<m){ans|=1<<i;}
}
cout<<ans; }

http://www.xdnf.cn/news/1870.html

相关文章:

  • 计算机基础 原码反码补码问题
  • exec和spawn
  • CSRF请求伪造
  • Pycharm(三):梯度下降法
  • java实现网格交易回测
  • 23种设计模式-行为型模式之责任链模式(Java版本)
  • Python3(10) 元组
  • ubuntu(28):ubuntu系统多版本conda和多版本cuda共存
  • 插件热更新后界面不更新问题
  • Flutter 环境搭建 (Android)
  • 雷达水位计在山洪预警中的作用
  • Babylon.js 材质统一转换指南:将 AssetContainer 中的所有材质转换为 PBRMetallicRoughnessMaterial
  • 【Python-Day 5】Python 格式化输出实战:%、format()、f-string 对比与最佳实践
  • 测试流程?
  • Python3(11) 字典
  • Java学习手册:Java时间类使用
  • 16:00开始面试,16:08就出来了,问的问题有点变态。。。
  • react 常用钩子 hooks 总结
  • 《Keras 3 :使用 TFServing 提供 TensorFlow 模型》
  • Linux中你必须掌握的20个常见命令,提升工作效率!
  • 问答页面支持拖拽和复制粘贴文件,MaxKB企业级AI助手v1.10.6 LTS版本发布
  • conformer编码器
  • DeskGo 4.0(官方版)桌面管理工具软件下载及安装教程
  • JDBC之ORM思想及SQL注入
  • UWA DAY 2025 正式启动|十年筑基,驱动游戏未来引擎
  • Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(上)
  • Web漏洞--XSS之订单系统和Shell箱子
  • Android APP 热修复原理
  • ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变
  • python实现简单的UI交互