#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++关于二进制位操作小结的更多相关文章

  1. Python读字节某一位的值,设置某一位的值,二进制位操作

    Python读字节某一位的值,设置某一位的值,二进制位操作   在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1.True和Fa ...

  2. JAVA中常用的二进制位操作

    一,计算某个正数的二进制表示法中 1 的个数 //求解正数的二进制表示法中的 1 的位数 private static int countBit(int num){ int count = 0; fo ...

  3. 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数

    1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...

  4. 让C#、VB.NET实现复杂的二进制操作

    VB.NET和C#属于高级语言,对二进制位操作的支持不是很好,比如没有了移位运算等,用的时候确实很不方便,所以在闲暇之余我重新封装了一个用于C#.VB.NET的位操作类库,通过该类库可以实现数据移位. ...

  5. C++ 中的位操作

    定义二进制变量: 一般是以八进制或者十六进制来定义,八进制数以0开头,十六进制数以0x开头 例如int  a = 0x80, 这里的80只能表示8个二进制位,它表示的是int的低8位,前面的24个二进 ...

  6. 嵌入式、C语言位操作的一些技巧汇总

    下面分享关于位操作的一些笔记: 一.位操作简单介绍 首先,以下是按位运算符: 在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中的某一位或者几位,但是又不想改变其它位原有的值, ...

  7. 二进制;16进制; Byte , Python的bytes类; Base64数据编码; Bae64模块;

    参考:中文维基 二进制 位操作(wiki) Byte字节 互联网数据处理:Base64数据编码 Python的模块Base64 16进制简介 python: bytes对象 字符集介绍:ascii 二 ...

  8. redis实战笔记(3)-第3章 Redis命令

    第3章 Redis命令   本章主要内容 字符串命令. 列表命令和集合命令 散列命令和有序集合命令 发布命令与订阅命令 其他命令   在每个不同的数据类型的章节里, 展示的都是该数据类型所独有的. 最 ...

  9. NodeJS学习指南

    七天学会NodeJS NodeJS基础 什么是NodeJS 有啥用处 如何安装 安装程序 编译安装 如何运行 权限问题 模块 require exports module 模块初始化 主模块 完整示例 ...

随机推荐

  1. 常见Json字符串反序列化处理方式总结

    常用来处理Json字符串序列化 反序列化组件:Newtonsoft.Json (https://www.newtonsoft.com/json) 参考资料https://www.cnblogs.com ...

  2. size_type类型

    由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型 string::size_type它 ...

  3. 洛谷P3369 【模板】普通平衡树 01trie/骚操作

    Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...

  4. jQuery更改样式

    $(".input_check_2").css("left","31px"); //更改left的值

  5. 51nod 1325 两棵树的问题(最大权闭合子图)

    首先如果点权全都为正,就可以直接选所有的点. 活在梦里.. 考虑枚举一个点\(i\),作为我们选择的集合中的一个点. 然后我们把另一个点\(j\)选入集合的时候必须把两棵树中\(i\)和\(j\)路径 ...

  6. mysql 定时每秒插入一条数据

    1.创建表 2.创建存储过程 CREATE PROCEDURE user()INSERT INTO user(name,sex) VALUES ('1111','1'); 3.创建定时器 CREATE ...

  7. JVM内存管理简单剖析

    Java是一个跨平台语言,屏蔽操作系统的差异,无需关心复杂内存管理,做到编写一次到处运行.其强大的能力源于Java Virtual Machine (虚拟机)默默的付出.代码运行在虚拟机之上,虚拟机运 ...

  8. Eclipse配置class文件输出目录

    1, Eclipse选中项目名称,邮件选中“Build Path”,然后选择“Configure Build Path”--->选择“Source” Tab---->修改"Def ...

  9. 【BZOJ 1212】[HNOI2004]L语言

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 因为查询的字典里面.单词的最大长度为10 所以. 如果建立一棵字典树的话. 深度最多为10: 那么可以写一个DP; 设f[i]表示1 ...

  10. Linux 文件系统初步

         在Linux系统中,假设我们想要知道一个文件的详细信息,那么最简便的方法自然就是ls命令了.例如以下图所看到的:当在shell输入命令"ls -l old"时,在下方就会 ...