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++关于二进制位操作小结的更多相关文章
- Python读字节某一位的值,设置某一位的值,二进制位操作
Python读字节某一位的值,设置某一位的值,二进制位操作 在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1.True和Fa ...
- JAVA中常用的二进制位操作
一,计算某个正数的二进制表示法中 1 的个数 //求解正数的二进制表示法中的 1 的位数 private static int countBit(int num){ int count = 0; fo ...
- 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数
1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...
- 让C#、VB.NET实现复杂的二进制操作
VB.NET和C#属于高级语言,对二进制位操作的支持不是很好,比如没有了移位运算等,用的时候确实很不方便,所以在闲暇之余我重新封装了一个用于C#.VB.NET的位操作类库,通过该类库可以实现数据移位. ...
- C++ 中的位操作
定义二进制变量: 一般是以八进制或者十六进制来定义,八进制数以0开头,十六进制数以0x开头 例如int a = 0x80, 这里的80只能表示8个二进制位,它表示的是int的低8位,前面的24个二进 ...
- 嵌入式、C语言位操作的一些技巧汇总
下面分享关于位操作的一些笔记: 一.位操作简单介绍 首先,以下是按位运算符: 在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中的某一位或者几位,但是又不想改变其它位原有的值, ...
- 二进制;16进制; Byte , Python的bytes类; Base64数据编码; Bae64模块;
参考:中文维基 二进制 位操作(wiki) Byte字节 互联网数据处理:Base64数据编码 Python的模块Base64 16进制简介 python: bytes对象 字符集介绍:ascii 二 ...
- redis实战笔记(3)-第3章 Redis命令
第3章 Redis命令 本章主要内容 字符串命令. 列表命令和集合命令 散列命令和有序集合命令 发布命令与订阅命令 其他命令 在每个不同的数据类型的章节里, 展示的都是该数据类型所独有的. 最 ...
- NodeJS学习指南
七天学会NodeJS NodeJS基础 什么是NodeJS 有啥用处 如何安装 安装程序 编译安装 如何运行 权限问题 模块 require exports module 模块初始化 主模块 完整示例 ...
随机推荐
- 3Ds Max制作克劳族少女教程
作者:Andrius Balciunas 使用软件:3ds Max, ZBrush 3ds Max下载:http://www.xy3dsmax.com/xiazai.html ZBrush下载:htt ...
- js上传文件获取文件流
上传文件获取文件流 <div> 上传文件 : <input type="file" name = "file" id = "file ...
- 在pycharm中配置Anaconda以及pip源配置
在学习推荐系统.机器学习.数据挖掘时,python是非常强大的工具,也有很多很强大的模块,但是模块的安装却是一件令人头疼的事情. 现在有个工具--anaconda,他已经帮我们集成好了很多工具了!an ...
- 在android中,编译的项目使用到第三方jar的导入方法 终极版!
1,在android系统环境中编译自己的项目时,往往会用到第三方jar包.这些jar包在eclipse中加入编译,一路畅通,由于eclipse已经帮助你配置好了.可是当把这个项目复制到系统环境中编译时 ...
- word break相关问题的解法
https://leetcode.com/problems/word-break/?tab=Description 以及 https://leetcode.com/problems/concatena ...
- NIO框架之MINA源代码解析(一):背景
"你们的agent占了好多系统的port.把我们的非常多业务系统都给整死了,给我们造成了非常大的损失.要求你们的相关领导下周过来道歉" -- 来自我们的一个客户. ...
- Numpy科学计算工具
Numpy初探 Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组 ...
- Why functions - Not only for python
It may not be clear why it is worth the trouble to divide a program into functions. There are a lot ...
- 安卓开发--WebView
package com.zhangxi.test01; import android.app.Activity;import android.app.ProgressDialog;import and ...
- Boostrap零散
12 row 是核心控件 class="form-control" 弹窗口<input data-toggle="modal" data-target=& ...