编程中位运算用法总结
来源:互联网 发布:c语言统计单词个数 编辑:程序博客网 时间:2024/06/13 04:59
清零取反要用与,某位置一可用或
位运算符的应用 (源操作数s 掩码mask)
二进制补码运算公式:
应用举例
(16) x 的 相反数 表示为 (~x+1)
#include <stdio.h>
//设置x的第y位为1
#define setbit(x,y) (x)|=(1<<(y-1))
//得到x的第y位的值
#define BitGet(Number,pos) ((Number)>>(pos-1)&1)
//打印x的值
#define print(x) printf("%d\n",x)
//将整数(4个字节)循环右移动k位
#define Rot(a,k) ((a)<<(k)|(a)>>(32-k))
//判断a是否为2的幂次数
#define POW2(a) ((((a)&(a-1))==0)&&(a!=0))
#define OPPX(x) (~(x)+1)
//返回X,Y 的平均值
int average(int x, int y)
{
return (x&y)+((x^y)>>1);
}
//判断a是否为2的幂次数
bool power2(int x)
{
}
//x与y互换
void swap(int& x , int& y)
{
}
int main()
{
int a=0x000D;
print(a);
int b=BitGet(a,2);
print(b);
setbit(a,2);
print(a);
print(BitGet(a,2));
int c=Rot(a,33);
print(c);
print(BitGet(c,5));
printf("8+5=%d\n",average(8,692));
int i;
for (i=0;i<1000;i++)
{
}
printf("\n");
int x=10,y=90;
swap(x,y);
print(x);
print(y);
print(OPPX(-705));
return 0;
}
实例
----------------------+---------------------------+--------------------
去掉最后一位 ¦ (101101->10110) ¦ x >> 1
在最后加一个0 ¦ (101101->1011010) ¦ x < < 1
在最后加一个1 ¦ (101101->1011011) ¦ x < < 1+1
把最后一位变成1 ¦ (101100->101101) ¦ x ¦ 1
把最后一位变成0 ¦ (101101->101100) ¦ x ¦ 1-1
最后一位取反 ¦ (101101->101100) ¦ x ^ 1
把右数第k位变成1 ¦ (101001->101101,k=3) ¦ x ¦ (1 < < (k-1))
把右数第k位变成0 ¦ (101101->101001,k=3) ¦ x & ~ (1 < < (k-1))
右数第k位取反 ¦ (101001->101101,k=3) ¦ x ^ (1 < < (k-1))
取末三位 ¦ (1101101->101) ¦ x & 7
取末k位 ¦ (1101101->1101,k=5) ¦ x & ((1 < < k)-1)
取右数第k位 ¦ (1101101->1,k=4) ¦ x >> (k-1) & 1
把末k位变成1 ¦ (101001->101111,k=4) ¦ x ¦ (1 < < k-1)
末k位取反 ¦ (101001->100110,k=4) ¦ x ^ (1 < < k-1)
把右边连续的1变成0 ¦ (100101111->100100000) ¦ x & (x+1)
把右起第一个0变成1 ¦ (100101111->100111111) ¦ x ¦ (x+1)
把右边连续的0变成1 ¦ (11011000->11011111) ¦ x ¦ (x-1)
取右边连续的1 ¦ (100101111->1111) ¦ (x ^ (x+1)) >> 1
去掉右起第一个1的左边 ¦ (100101000->1000) ¦ x & (x ^ (x-1))
判断奇数 (x&1)==1
判断偶数 (x&1)==0
例如求从x位(高)到y位(低)间共有多少个1
public static int FindChessNum(int x, int y, ushort k)
- 编程中位运算用法总结
- 编程中位运算用法总结
- 编程中位运算用法总结
- 编程中位运算用法总结
- 位运算用法总结
- 常见的位运算用法总结
- c语言中位运算用法
- 编程中 常见的位运算问题
- 有关面试中常见位运算总结
- 位运算巧妙用法
- 编程技巧总结-用位运算表示极大极小值
- 位运算编程
- 位运算编程题三道
- 位运算总结
- 常用位运算总结
- 位运算总结
- 位运算总结
- C位运算总结
- [js高手之路] vue系列教程
- Python:如何取矩阵的部分列,保存为一个新的矩阵
- JavaScript高级程序设计——读书笔记第二回
- Android apk 反编译
- 【jzoj5315】【NOIP2017提高A组模拟8.19】【小串串】【sam 】
- 编程中位运算用法总结
- 【c#机房重构】之存储过程
- Java集合-LinkedHashMap工作原理
- Centos 7.0配置LAMP(Linux+Apache HTTP+MySQL+PHP)
- squid 单进程 高并发解决方案
- 考试题目——雪后村庄
- JAVA数据结构和算法:第一章(时间复杂度和空间复杂度)
- Hadoop Operations(Hadoop操作) 详解(二) HDFS
- 字符串算法总结