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 模块初始化 主模块 完整示例 ...
 
随机推荐
- ActiveMQ学习笔记(1)----初识ActiveMQ
			
1. 什么是ActiveMQ? ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和j2ee1.4规范的JMS Provider实现的消息中间件(Message Oriented ...
 - System.getProperty可以获取的参数
			
java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...
 - LCT复习
			
LCT,虚实链剖分.支持连边和断边操作.Tarjan制造. [HNOI2010]弹飞绵羊 当然这题分块可以做,常数小,但是LCT更无脑. 建立一个虚拟的弹飞节点\(n+1\),初始化时对于一个点假如再 ...
 - [NOI2002]贪吃的九头龙(树形dp)
			
[NOI2002]贪吃的九头龙 题目背景 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是 说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的 ...
 - STM32是如何进入中断服务函数xxx_IRQHandler的
			
今天在看stm32的中断,一时间不理解stm32主函数是如何进入中断函数的,按C编程的理解,会有个特定的入口之类的,但是看demo过程中没有发现入口. 以串口中断服务函数void USART1_IRQ ...
 - 压缩和还原压缩的JS代码
			
压缩JS代码:packer – 最好用的 javascript 压缩工具地址: http://dean.edwards.name/packer/ http://kan.willin.org/?page ...
 - node04---fs文件操作、静态服务器
			
08fs.js var http = require("http"); var fs = require("fs"); var server = http.cr ...
 - vim 插件之vim-trailing-whitespace
			
vim-trailing-whitespace 这个插件是快速去掉文章行末的空格 地址 http://github.com/bronson/vim-trailing-whitespace 如果你想要使 ...
 - Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
			
转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...
 - django笔记10 cookie整理
			
感谢武沛齐老师 Alex老师 cookie 没有cookie所有的网站都登录不上 客户端浏览器上的一个文件 {'user':'ljc'} {"user":'zpt'} reques ...