C++关于二进制位操作小结
#include <iostream>
using namespace std;
//二进制位逆序。
int Grial(int x)
{
int n = 32;
int count = 0;
while (n--)
{
count|= ((x&0x1) << n);
x = ((unsigned)x >> 1);
}
return count;
}
int main()
{
cout << Grial(1) << endl;
return 0;
}
#include <iostream>
using namespace std;
//二进制位中的奇偶位互换。
int Grial(int x)
{
int sum1 = x & 0x55555555;
int sum2 = x & 0xaaaaaaaa;
sum1 <<= 1;
sum2 >>= 1;
return sum1 | sum2;
}
int main()
{
cout << Grial(6) << endl;
return 0;
}
#include <iostream>
using namespace std;
//求两个数的和。
int Grial(int x, int y)
{
if (!y)return x;
//int ret = x^y;
//-1%2=-1;
int sum = x^y;
int num = ((x&y)<<1);
return Grial(sum,num);
}
int main()
{
cout << Grial(3, 5) << endl;
return 0;
}
#include <iostream>
using namespace std;
//推断一个数是不是2的n次方。
bool Grial(int x)
{
return (x&(x - 1)) == 0;
}
int main()
{
cout << Grial(4) << endl;
return 0;
}
#include <iostream>
using namespace std;
//求二进制中1的个数。
int Grial(int x)
{
int count = 0;
while (x)
{
x = x&(x - 1);
count++;
}
return count;
}
int main()
{
cout << Grial(15) << endl;
}
#include <iostream>
using namespace std;
//求平均值。
int Grial(int x,int y)
{
return (x&y) + ((x^y) >> 1);
}
int main()
{
cout << Grial(20, 48) << endl;
return 0;
}
#include <iostream>
using namespace std;
//求平均值。
int Grial(int x,int y)
{
return x - (x - y) / 2;
}
int main()
{
cout << Grial(3,9) << endl;
return 0;
}
相关文章
- [C++] 用Xcode来写C++程序[2] 操作变量
- 【C/C++学院】0830-兰不达表达式/STL算法-操作数据
- 【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级
- Python3 pip安装包时报错 error: Microsoft Visual C++ 14.0 is required.解决办法
- paip.c++ 操作360浏览器总结..
- paip.c++ qt 目录遍历以及文件操作
- Computer:C语言/C++语言的简介、发展历史、应用领域、编程语言环境IDE安装、学习路线之详细攻略
- 【华为OD机试 2023最新 】 最大利润(C++)
- C++ string字符串按分隔符分割成一个数组
- Excel表格写入操作函数 C++
- c++ 操作注冊表
- 手写一个c++的 Iterator
- C++字符串操作笔试题第二波
- VC++一文带你搞懂如何操作文件对话框(附源码)
- C++程序中执行abort等操作导致没有生成dump文件的问题案例分析
- 机器人C++库(9)Robotics Library 之机器人建模(VRML)、工作场景Scances建模(VRML)